<?xml version="1.0" encoding="utf-8"?>
<xbrl
  xml:lang="en-US"
  xmlns="http://www.xbrl.org/2003/instance"
  xmlns:calx="http://www.calix.com/20221231"
  xmlns:country="http://xbrl.sec.gov/country/2022"
  xmlns:dei="http://xbrl.sec.gov/dei/2022"
  xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
  xmlns:link="http://www.xbrl.org/2003/linkbase"
  xmlns:srt="http://fasb.org/srt/2022"
  xmlns:us-gaap="http://fasb.org/us-gaap/2022"
  xmlns:xbrldi="http://xbrl.org/2006/xbrldi"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <link:schemaRef xlink:href="calx-20221231.xsd" xlink:type="simple"/>
    <context id="i3e65b62e096845678e29e95530315bfa_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ia8228bdbbce54d7c9624a78d5d2b980e_I20220701">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <instant>2022-07-01</instant>
        </period>
    </context>
    <context id="ieb250817b6e542ed8d81042a73b3771f_I20230210">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <instant>2023-02-10</instant>
        </period>
    </context>
    <context id="i18ca6c2cd59045dcb331174af35d6d74_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="idee0869faf144f42866d7aa288175d02_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ie82c4a028e2f46f49e00eb16a6221418_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i0c590b88b1f64a2a9a73b5cdd3ac6d16_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i1381a46e2faf489e8372f8f632cfa082_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i3c40cef6156346cb9dfc20f4aa283283_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i221678b32f244027820fdddd22d493cd_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="ibe3ffb6b029948b89bd038665fa57d44_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i62dee52382d14e1f9e489331c0ab3f10_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i2d65a910a2a941fab75505cb7423e31f_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i7643f564c7844d13b40e6df62ba9ce35_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i1103780cf7bc45888c71a420256ec31e_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ieb0737a6b805496eb64c267495cdc455_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i5b9a216ba92f4662a6c5e29e4660d201_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i2b2de5dc230f469ebf57510dcb995ef8_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i70828112df2e4dc0aacf44aeade1a12c_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="id00d493640324cd0b73797ced1093269_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ic512b19e711643f59c98f75953b49777_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i5647c99c6e924e9681658be971eaeb0b_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ifc02f355b98046449ab7a198a475e208_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="iced057490ecb40f8af711b91b2a3800d_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i338d4f0ba4c9446fa367007416d30e0e_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i00b2f6ea6d574881a414d40c48f4b09f_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="if9d416b760f04d82b7305c51cd60f965_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i6558c3e05bc14f9787f4c77c4cbf02da_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i7b351fe8ba1143289315d78b03323c97_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i62e8d30d767641039a22982dd9da4de2_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ib57a8227187a4016b87def7464807008_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i8f14ec41ce5b42bdb7290c9b661e7b40_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i0e63d4cd16584e67be8964684fea4f2b_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i99e1660b325840b39b58d880b4cb6c3a_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="iae919b947c1f4fd8a9545cb83d022877_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ibf694ca5c1784abd900378a9d5cac4c9_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i1b11ec9c87f647eda542f47bd568cae6_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i94330ed0d9cb44ad89b11f0416a40439_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i2fc9c021dca34b31add79cf37c24ff19_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ib9005996b5004e2ea8204ab8956288bf_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i818127b04e1e47dbad6b509284dc66e3_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ib4e76b7a0138479ebec9c577d687f1b3_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i11ca9800e83c4a9fac73cab090bae62c_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">srt:SubsidiariesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:BrazilChinaAndUnitedKingdomMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i7ad4ad7c154840f4bae9ab60b925baa2_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i4884a1eea7384d1598cb80136c65edb1_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i83e79e5ca7b146d28600c379569850f6_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ic399c58a2c1a45bd84aaa9618f98d9e8_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i0bf6d605c909425e9b0bbeda75e84492_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="if54b7cb1441945f288166b95742d4e04_D20210704-20211002">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <startDate>2021-07-04</startDate>
            <endDate>2021-10-02</endDate>
        </period>
    </context>
    <context id="ic38a86a38cbb476798e3dd19d71ee36d_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CashMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ic6740d270bd44d0183c169758c4ea62d_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CashMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i0f4b83625a934f8ca3fe1b1ca19c4b55_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i673cc06359884f75af7187294e97424c_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ied4eb127f8c34de9ab8ee8c6d45c70d5_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i664d2390333c48adb557984dce1aa6e2_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i9c5831145c9248d6abebe6d6cef1287a_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i09a1c858595a4a30a3c15e60909e366e_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i7e64a1001c8149bcaa2a5d6d9cb3384f_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i535c7a70b8a942c79affe1727d7ae52b_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="iae1efd6e91be43c984f2ec4c782de70d_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i3333828445aa4fb99c0ed582b56ad206_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ic16ba641b2084da4b404a37dcb45e256_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i5b99835257004211b4a068dd960dc899_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i820b02ffde9349fb97eb0f64a6f6c7e9_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i949c87eb081c4441b7e851734c228f84_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i6d7b2ffce6be4b6fa0bb526a979535d0_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i0a565c8b23bc4d09a1f297fb9bed6d2e_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i744cd44f39884a5a9e7c494e807de46d_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i4793b5e7b36744d0b452f2f9832d9099_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ibcead81fc3df41b3a1cf1e698b490bdc_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i48c13f271a7048a49e9f93bc547075a0_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">calx:ShortTermMarketableSecuritiesAndCashEquivalentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i83fd5d90fe6b4285bab023841c3a14b0_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">calx:ShortTermMarketableSecuritiesAndCashEquivalentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i86f4de24126640ba8b71657febb828f0_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">calx:ShortTermMarketableSecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="icd24b2de72464d3ba30d3ad07a4e56cd_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">calx:ShortTermMarketableSecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i2c3a8629b4304f7eb5ca0f3daa147a20_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">calx:ShortTermMarketableSecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ic3ce6d215fd045b89989818cac3c19c7_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">calx:ShortTermMarketableSecuritiesAndCashEquivalentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ib4730c11d033405ab26535a7d5d1902a_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i4e5e68f096524db3a6c5289a50bd1e54_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i0ab466283f8f4102886a538b89828f49_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i68862cb4af34489a821a714a84d59703_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="iec2cc538fb224ec88a4f3b699672a078_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i056a524a4298478b90de1f1a23ee2241_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i67913f8a27bc47f1be4f5522a875439a_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="id840696585cf4c0d85ed3042e75c8d4f_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="iebc70d6cc46241e39e116d70f0745b5e_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ic8e53431a0164b19b6fd5952ecd4356d_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i20829567e15d4e138a070a1d2bd1f296_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i952170666232494785ca17ec4b0f402f_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="iedb70c0486cf430c999ecb779842f9b7_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i03feb03d4b1948faa67282c5f94b8b9f_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="iec5c97ff467a498191966be3f6fe21e2_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i845d08c05ade4329a7d34e722a2a29ee_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="icbb5af7610094c1ea043d7757229aea7_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i57af706ebf9c4dcfbc3ae9b3887ece24_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ia446f035a91b4e8cbc5dfb2943bf38cc_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i04a13de45df2495e910c5650860ee7ae_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ibcbd3e4469a449f7b3a0e404714fbb82_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i92547be2d4ec4c2fbe99b417670a0c1b_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ie5b3737f696b45309b05ec8486ef71e8_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="iffabf941f6c24db2bf8711334e47cbaf_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i17b34b27f19945deb8a3001fdb72bef4_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i3b2a3664f2194292821239b94d9d12d5_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i2e365a49d2204d5eb34750b7781343b9_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="if31b6a989a394506af109a221346eb6d_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i17abd99a86944a3faf931f3eee82c2c4_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i3ebca95019264ed79a51ec6974672638_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="if01ab496558d41afab2522673093c772_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ifac485b7e7d44598b822d573869dfc8f_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i682285ed68dc42ae833aa59cfbd46465_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ifa934a3e48ab4d279f8356602465981e_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ib755630aec6046029d3ebd796781b082_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i1e4012789050403a8f1ba4ae649dc645_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ib9efcd417c244b0da39cf058581c135d_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="id5bc9fe6b44f485ea9b213709ae25a11_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i189b4703619e4017b1fab65dbc717051_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i73bf3f7d4a2e494896bee43a0d38e4ca_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="id818e7cab6a34ee78d221eeb25506d00_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ic5caa568a0ce4d57a7e0f3c3a88488d8_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ieb051ab610094bc982d7f8bddacb801c_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ib92f3ac53aca49de92990fdea96d45fa_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i8eef97f8547d428085e80cc1cc4f16ce_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="iebe8abb865a348c58ba05736022e6e1f_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">calx:SECSchedule1209ReserveProductReturnsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i9d905ccbbb3241a997324600f7a5cfc2_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">calx:SECSchedule1209ReserveProductReturnsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="if617aab8c27e4dc6aab4a0a32d272ca3_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">calx:SECSchedule1209ReserveProductReturnsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i5782a4e7e94146cbac209e543c2116a3_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="iad5ba5a8071f469bbd153fbec01071bb_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i915095b41f604af89d5f5c1c0b516f64_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">calx:SECSchedule1209ReserveProductReturnsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i0f99024590684757bf76146dac6621f8_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">calx:SECSchedule1209ReserveProductReturnsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i87fd0a9a32974808b514ae0e6b4977f2_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i92749530cfc04658b8e87d80c4434870_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ie99c59fbe14a4befb7f451e29f097c4f_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">calx:SECSchedule1209ReserveProductReturnsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i4827582f665d4174a35e6ed4f0286360_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">calx:SECSchedule1209ReserveProductReturnsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="iebb784ec1d1048e4b3adf4de3e50ed56_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ib3e6d85676a149d5b92fe67b4dd2f810_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ic272514a784a4bfb9f74d54bf7e6b2d4_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i9c61681ac2dd40a199c97e498d4424b3_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="icb4228678bd94611ba039b6b832a6910_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">calx:SoftwareMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="iec140b402bfd43a8810ed0d254278f7f_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">calx:SoftwareMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i6ae01a9fed3143c39a5d8900e11ab1dc_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="id764aa16db854d7088bcc29cffc1ecd4_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i6ad0d0e543464e82a0d0f6c87834547c_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i1ab5679f664a4a9483a2e951b60376c2_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ifec7805f58bf4e1eb494b1fd74099264_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i64cf409db5e74b9e888f27feb92d3f31_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i29707179eee34196994e77484ecb2b78_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ia8bc5723e8d94237a0acf104c58672c9_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringPlanAxis">calx:AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ief29060d1533404bb2cd809c20ef7077_D20211003-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:SanJoseCaliforniaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-10-03</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ia1b2dc7d18c14276b64719107b47aec1_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:SanJoseCaliforniaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="id212028f7d3447bc991b7b183b10250a_I20211130">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <instant>2021-11-30</instant>
        </period>
    </context>
    <context id="i7fadbf2c253d413a88bde1b78e167eca_D20200801-20200831">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:SubsidiarySaleOfStockAxis">calx:PublicStockOfferingMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-08-01</startDate>
            <endDate>2020-08-31</endDate>
        </period>
    </context>
    <context id="ia82b2d49648943eaa5310ec5fb3becca_I20200831">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:SubsidiarySaleOfStockAxis">calx:PublicStockOfferingMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-08-31</instant>
        </period>
    </context>
    <context id="i91bded7562bb4301ad3b554b40d54850_D20200801-20200831">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:SubsidiarySaleOfStockAxis">us-gaap:OverAllotmentOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-08-01</startDate>
            <endDate>2020-08-31</endDate>
        </period>
    </context>
    <context id="i505f47a2e1ed4f3195b453dfbe6a64f4_D20220701-20220731">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <startDate>2022-07-01</startDate>
            <endDate>2022-07-31</endDate>
        </period>
    </context>
    <context id="idc3cb693fe5140938ac10dd90b12e4b3_I20220731">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <instant>2022-07-31</instant>
        </period>
    </context>
    <context id="i3cbfffa9694a42a389d948ddc37f1e20_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2019EquityIncentiveAwardPlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i41eb5021bb2b41b5b265a980031bec90_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2019EquityIncentiveAwardPlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i8c139b1f6d274d5e8a525134045a6df8_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2019EquityIncentiveAwardPlanMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheOneMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i75d90d403aa54a2294076893730c0ec6_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2019EquityIncentiveAwardPlanMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheTwoMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-02-01</startDate>
            <endDate>2021-02-28</endDate>
        </period>
    </context>
    <context id="ifc83d7d9ef314c2da18ad45d02064e43_I20220228">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-02-28</instant>
        </period>
    </context>
    <context id="i965de145a5b34dcd8fa276603435fdac_D20210201-20210228">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheOneMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-02-01</startDate>
            <endDate>2021-02-28</endDate>
        </period>
    </context>
    <context id="i700305bde84145bb849464dd58867c37_D20210201-20210228">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheTwoMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-02-01</startDate>
            <endDate>2021-02-28</endDate>
        </period>
    </context>
    <context id="i638345f07d274c7894c3feb7fb3b1042_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheTwoMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i541d20d065cc4fd69f959b3cae672349_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheTwoMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ida3289d8c97f4feda1965fdc60834811_D20220201-20220228">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-02-01</startDate>
            <endDate>2022-02-28</endDate>
        </period>
    </context>
    <context id="i295a35bf54c94432a53d75c53f7fd8cb_I20230228">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-02-28</instant>
        </period>
    </context>
    <context id="if0e6bad883de4fcf86c4c0bdd31069fb_D20230201-20230228">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-02-28</endDate>
        </period>
    </context>
    <context id="iec5297cc8cee403da61498dad383a323_D20230201-20230228">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheOneMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-02-28</endDate>
        </period>
    </context>
    <context id="ic11cc38580b54c38bdedf1d2424db347_D20230201-20230228">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheTwoMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-02-28</endDate>
        </period>
    </context>
    <context id="if3854c3da7554041bf128b38014a78ec_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="iee534fe4989d4adfa556c7ec64860bfa_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:EmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i44ecf0f2430144758b1f145ea2273bbc_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:EmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i880c5d0fdabc49049e2803cb35fd9265_D20190501-20190531">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:EmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-05-01</startDate>
            <endDate>2019-05-31</endDate>
        </period>
    </context>
    <context id="i0ec7c77a75e44d88b5272edccf8226e0_I20190430">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:EmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-04-30</instant>
        </period>
    </context>
    <context id="if0e209b492c749879687a6547794124c_I20190531">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:EmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-05-31</instant>
        </period>
    </context>
    <context id="i0986e5e1ce1a47cc98bf9ebd29d80c03_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2017NonqualifiedEmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i528f094095914bb2b53b77fdc1cf04e5_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2017NonqualifiedEmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i5b465428849c4e708a3b9d04506880c1_D20200501-20200531">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2017NonqualifiedEmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-05-01</startDate>
            <endDate>2020-05-31</endDate>
        </period>
    </context>
    <context id="i26ca0d92b2424298b0bcea3c569b00ba_I20200531">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2017NonqualifiedEmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-05-31</instant>
        </period>
    </context>
    <context id="i58c539110982492a8e0b62fd8b455319_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">calx:CostOfRevenueProductsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="if4be25f0af9f4b0ea5f22877ddbfebd7_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">calx:CostOfRevenueProductsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i72cf599545d14ebc9ce8787ba50c5aa0_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">calx:CostOfRevenueProductsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="idaed2f6c8c27442a8b45142b76ced351_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">calx:CostOfRevenueServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i4106eb5f32cc4149875537163855706f_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">calx:CostOfRevenueServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ic93cf0acaeed4e3b979094ca720d677c_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">calx:CostOfRevenueServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i7662d716785e4f228c33abfdf3c8f4b3_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i551b31ab695c495abc571c977cc81179_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ib672ba4f581b4efb88684284d82eeeee_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i077d8297ff7e49b0bbfd5fe52a5f1bf7_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ic6675333d4254a57862012c889ba560e_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i3a828b5e5a764680970a3d824b40aca7_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i44b5a1d07f9948e1b8ee67a159f31b98_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="id9c1cab1298a4f73ab040395f2f7faa1_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ic8e79da6e7d2470fa750cd2afb19e759_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i9bba5a4e0da24eee8fe78a1ed61d8082_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ia769a333e78142368aad724844d01ad9_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="id42b2b8786cd441ab4f99814e4e629c3_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i42bec794c13c4ba7acb3467565058cfc_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2017NonqualifiedEmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i7c7d626e2ca643048ffb47a60d526ee3_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2017NonqualifiedEmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="if9248f026f6d479a9a7d8c51a9f4b8e4_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i67e02cfc4d874cff8afe2659b8d50558_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ia0851320733849cd9c11d5811d229fc8_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ic1895f9b31ae4e18a52aedee0737e67e_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i6b7705e9c54642b2a6c0b775486df247_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i1c63790a858946a996ca1299276c0a06_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2019PlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ib254f0683dd74e86af161b45013b2484_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i960b09b6825f4607b4d06a80a878fbdb_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i0735e262a99c4c5789bcfd438e2a271f_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="if64a3a711a7c4298ad36afd715aa0bb7_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ief77c956212749c98a1e47bc2259eed1_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ia6a7a2e1b59f47d885453b2b96588acc_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i12575da023634f6cb1d81df6e92df5a7_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i388a82dc33064d18880924884eb0f3c6_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ia3ff94b23a2c4e91a27bf12f2f3e6231_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ic9b55f5c1eeb41c79688d7363a1baa49_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="icd96ce43bdbe4439a3f6e14fdc5c6b75_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:DomesticCountryMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i7b419d352d354ed585a00db42c0dc4a8_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:StateAndLocalJurisdictionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ifb0a61fc15ad461aae58a57e0493b921_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">calx:CaliforniaStateMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i0e5bdc2854004c18b26a2bdaaed61080_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">calx:OtherStateMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ieae5dffc94804c0fb48da0faaee7d475_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i792b178b52944936bae6b48cfc3fce7f_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i728d38d208c644f8bd1d8544c2d48f1e_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i33041b28ed9f44f5a1ea4de785d07036_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ie84a15f4241d4e8da95b19019b001ec5_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i79eefe6e67de420ab8fe4564c2d04fa1_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i5cc304bf3bd8498298acfd78ba22d90f_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:AmericasExUSMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i5ed901e4c55c42e4a419f1770435e0db_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:AmericasExUSMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="id595cb86ff10436abaf67dbd61231ec1_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:AmericasExUSMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i8b262bd7fe1a4691a8c6bae2a9787fbd_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:MiddleEastAndAfricaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i18ab8bb7900d4d298140ed4be06aba85_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:MiddleEastAndAfricaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="iff0d225298e349df93cca1c136c9fe21_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:MiddleEastAndAfricaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="idb8c564de1d14caaabae034fdf7227b4_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:AsiaPacificMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i43b188fea50c48b0b4b3465f99c1a9a9_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:AsiaPacificMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i6e6ad924af64444b9fd8b9c73fe1fd0e_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:AsiaPacificMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ia7372260ff5944fbbd414f122dbb6a4e_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="idc76a7bbda2145469e7de41ace18e7dd_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i2449b8a5dc374d20bbd43cda851a4aec_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:CN</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="id634ed9a8216446eb71023487e565cff_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:CN</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i4dbf04314295476890b7ee4e02340210_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:IN</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i6c55f8ead39246eeb1b8ab7a037df871_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:IN</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i2bf837c4cb024b00b0c258f20aeaad31_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:typedMember dimension="us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis">
                    <us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain>2023-01-01</us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain>
                </xbrldi:typedMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i04be09c8797d413a93af8d5d08358be6_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">calx:LumenTechnologiesIncMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:RevenueFromContractWithCustomerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i7932d93f74d241a2b2e0cfcec811a2f5_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">calx:OneCustomerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:AccountsReceivableMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ida3b3cbaef8142a188dbc53f1b97daac_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">calx:CustomerTwoMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:AccountsReceivableMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <unit id="usd">
        <measure>iso4217:USD</measure>
    </unit>
    <unit id="shares">
        <measure>shares</measure>
    </unit>
    <unit id="usdPerShare">
        <divide>
            <unitNumerator>
                <measure>iso4217:USD</measure>
            </unitNumerator>
            <unitDenominator>
                <measure>shares</measure>
            </unitDenominator>
        </divide>
    </unit>
    <unit id="number">
        <measure>pure</measure>
    </unit>
    <unit id="period">
        <measure>calx:period</measure>
    </unit>
    <dei:EntityCentralIndexKey
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM180L2ZyYWc6YTFhZTUwMTQzODU3NDAwMTliMjA1NzZlYzhlOTQ5ZmUvdGFibGU6NzJkYzk5M2RkZWY5NDNhODgwMWRmNjQ2ZGU3MjVmMTkvdGFibGVyYW5nZTo3MmRjOTkzZGRlZjk0M2E4ODAxZGY2NDZkZTcyNWYxOV8yLTEtMS0xLTM2MTk4_5d1b3ab6-fa7e-4107-a834-2562c9a64c07">0001406666</dei:EntityCentralIndexKey>
    <dei:AmendmentFlag
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM180L2ZyYWc6YTFhZTUwMTQzODU3NDAwMTliMjA1NzZlYzhlOTQ5ZmUvdGFibGU6NzJkYzk5M2RkZWY5NDNhODgwMWRmNjQ2ZGU3MjVmMTkvdGFibGVyYW5nZTo3MmRjOTkzZGRlZjk0M2E4ODAxZGY2NDZkZTcyNWYxOV81LTEtMS0xLTM2MTk4_0b2d5333-7ecb-442d-b3c7-66d00ae73148">false</dei:AmendmentFlag>
    <dei:DocumentFiscalYearFocus
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM180L2ZyYWc6YTFhZTUwMTQzODU3NDAwMTliMjA1NzZlYzhlOTQ5ZmUvdGFibGU6NzJkYzk5M2RkZWY5NDNhODgwMWRmNjQ2ZGU3MjVmMTkvdGFibGVyYW5nZTo3MmRjOTkzZGRlZjk0M2E4ODAxZGY2NDZkZTcyNWYxOV82LTEtMS0xLTM2MTk4_c29cd0ad-7f80-419b-b2c9-3490312c3dab">2022</dei:DocumentFiscalYearFocus>
    <dei:DocumentFiscalPeriodFocus
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM180L2ZyYWc6YTFhZTUwMTQzODU3NDAwMTliMjA1NzZlYzhlOTQ5ZmUvdGFibGU6NzJkYzk5M2RkZWY5NDNhODgwMWRmNjQ2ZGU3MjVmMTkvdGFibGVyYW5nZTo3MmRjOTkzZGRlZjk0M2E4ODAxZGY2NDZkZTcyNWYxOV83LTEtMS0xLTM2MTk4_798ce26f-976e-49ef-96d4-39019d3255f9">FY</dei:DocumentFiscalPeriodFocus>
    <calx:ProductWarrantyPeriod
      contextRef="i818127b04e1e47dbad6b509284dc66e3_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfNzk1NQ_52e60d60-98c1-49fa-aeb6-aa5951b471ac">P1Y</calx:ProductWarrantyPeriod>
    <calx:ProductWarrantyPeriod
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfNzk1OQ_d86fb7cc-3137-407d-b8ce-6c28a7e598e4">P3Y</calx:ProductWarrantyPeriod>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i4884a1eea7384d1598cb80136c65edb1_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjA4MDI_2e01504e-91d5-45fd-890f-25b987875d7a">P3Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzMTI4OA_027d6b6d-617d-484f-9ecf-b96b9b28d960">http://fasb.org/us-gaap/2022#AccruedLiabilitiesCurrent</us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList>
    <us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzMTI4OA_50fa3eb5-1337-42a0-a46b-a7c0ec1f6782">http://fasb.org/us-gaap/2022#AccruedLiabilitiesCurrent</us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList>
    <us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTphYWZiYmViNzQxMTc0MmUwODc2MTc4NGY1YjBiNGFiYy90YWJsZXJhbmdlOmFhZmJiZWI3NDExNzQyZTA4NzYxNzg0ZjViMGI0YWJjXzAtMC0xLTEtMzYxOTg_0eaed16b-5a85-4f40-8558-3b742d67e1cb">http://fasb.org/us-gaap/2022#AccruedLiabilitiesCurrent</us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList>
    <dei:DocumentType
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18zMjM5_48ba884b-1687-495f-9555-9bd3385ffeca">10-K</dei:DocumentType>
    <dei:DocumentAnnualReport
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6MWRiNGExMzc1MzBjNGM1YjhmODgwYzg5ODdiMWFiYjEvdGFibGVyYW5nZToxZGI0YTEzNzUzMGM0YzViOGY4ODBjODk4N2IxYWJiMV8wLTAtMS0xLTM2MTk4_ff33451e-def2-4aa2-be0d-475843420736">true</dei:DocumentAnnualReport>
    <dei:DocumentPeriodEndDate
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18xMjg_7ca0f519-4d33-4681-95d8-5e8547834be5">2022-12-31</dei:DocumentPeriodEndDate>
    <dei:CurrentFiscalYearEndDate
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18xMjg_7ad4795e-bf2d-4901-9ef4-3aa739f846a0">--12-31</dei:CurrentFiscalYearEndDate>
    <dei:DocumentTransitionReport
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6MzUzNDk4ZmQ4NDA3NDVjNWE4YmYzODM4NzNlYWZmZWMvdGFibGVyYW5nZTozNTM0OThmZDg0MDc0NWM1YThiZjM4Mzg3M2VhZmZlY18wLTAtMS0xLTM2MTk4_8e06559f-efc4-423f-9bb9-c616f2dc4d71">false</dei:DocumentTransitionReport>
    <dei:EntityFileNumber
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18yMjA_ebb69123-5ee3-41f7-9810-5963db2a99dc">001-34674</dei:EntityFileNumber>
    <dei:EntityRegistrantName
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18zMjQw_061c12bd-f894-49af-a7ff-2c7b757715d8">Calix, Inc.</dei:EntityRegistrantName>
    <dei:EntityIncorporationStateCountryCode
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF8wLTAtMS0xLTM2MTk4_92fcc760-b221-4a20-b3f3-62bc443bc774">DE</dei:EntityIncorporationStateCountryCode>
    <dei:EntityTaxIdentificationNumber
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF8wLTItMS0xLTM2MTk4_e1107cd3-e2eb-4ed7-84d2-d31c9b4bcdbf">68-0438710</dei:EntityTaxIdentificationNumber>
    <dei:EntityAddressAddressLine1
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF8zLTAtMS0xLTM2MTk4L3RleHRyZWdpb246NzZhNjQyZWY0ZGM3NDA3NzgwN2FkMmE5MjZjNjYxNzZfNA_8a9e72ff-4461-4fbf-8315-981fc8f0272d">2777 Orchard Parkway</dei:EntityAddressAddressLine1>
    <dei:EntityAddressCityOrTown
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF8zLTAtMS0xLTM2MTk4L3RleHRyZWdpb246NzZhNjQyZWY0ZGM3NDA3NzgwN2FkMmE5MjZjNjYxNzZfNw_fa95cd3a-2a35-48c8-a09e-dcf62a6bcb0f">San Jose</dei:EntityAddressCityOrTown>
    <dei:EntityAddressStateOrProvince
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF8zLTAtMS0xLTM2MTk4L3RleHRyZWdpb246NzZhNjQyZWY0ZGM3NDA3NzgwN2FkMmE5MjZjNjYxNzZfMTE_e121cceb-d46f-4bc1-bf9f-fef303c97e03">CA</dei:EntityAddressStateOrProvince>
    <dei:EntityAddressPostalZipCode
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF8zLTItMS0xLTM2MTk4L3RleHRyZWdpb246M2E5NGVkYjEwNTUwNDhkYTg5OThmZmVlNWViMTIwYmJfNA_aec57d98-d52c-49fc-8411-875154178d15">95134</dei:EntityAddressPostalZipCode>
    <dei:CityAreaCode
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF80LTAtMS0xLTM2MTk4L3RleHRyZWdpb246MzgyZDBhYjdlMzlhNDJiMWIxYzVkZDQ3ODQzMDZkNTVfNTY_9994208c-c7ef-4913-adbc-afa7decebaa3">408</dei:CityAreaCode>
    <dei:LocalPhoneNumber
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF80LTAtMS0xLTM2MTk4L3RleHRyZWdpb246MzgyZDBhYjdlMzlhNDJiMWIxYzVkZDQ3ODQzMDZkNTVfNjA_0df80c00-27b3-48be-b13d-bf376e411aca">514-3000</dei:LocalPhoneNumber>
    <dei:Security12bTitle
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF83LTAtMS0xLTM2MTk4_6238221b-6641-4888-8a00-a90509ee8df2">Common Stock, $0.025 par value</dei:Security12bTitle>
    <dei:TradingSymbol
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF83LTEtMS0xLTM2MTk4_9d49b0bc-fae4-44d5-be35-41b68b2624fa">CALX</dei:TradingSymbol>
    <dei:SecurityExchangeName
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF83LTItMS0xLTM2MTk4_ad58b464-b4a2-4fd4-9883-f98b20598249">NYSE</dei:SecurityExchangeName>
    <dei:EntityWellKnownSeasonedIssuer
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M180MzE_ecb1e392-6aa0-42ee-b4fa-e80d19686566">No</dei:EntityWellKnownSeasonedIssuer>
    <dei:EntityVoluntaryFilers
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M181NzY_0610156e-1fe7-4f5c-852d-eadddba195c0">No</dei:EntityVoluntaryFilers>
    <dei:EntityCurrentReportingStatus
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M185MzE_9be853e6-9f5e-43fe-8c49-9ee386e2a3e1">Yes</dei:EntityCurrentReportingStatus>
    <dei:EntityInteractiveDataCurrent
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18xMjYw_a6230488-bde6-484b-9f4e-1ca8701eaeca">Yes</dei:EntityInteractiveDataCurrent>
    <dei:EntityFilerCategory
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6MzhmNWNhZGQ3OGVmNDQzM2I0NjQzNjUyZGFmZTQxZjEvdGFibGVyYW5nZTozOGY1Y2FkZDc4ZWY0NDMzYjQ2NDM2NTJkYWZlNDFmMV8wLTAtMS0xLTM2MTk4_984c1a77-4cbf-4114-9eeb-1c5e4297ccc6">Large Accelerated Filer</dei:EntityFilerCategory>
    <dei:EntitySmallBusiness
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6MzhmNWNhZGQ3OGVmNDQzM2I0NjQzNjUyZGFmZTQxZjEvdGFibGVyYW5nZTozOGY1Y2FkZDc4ZWY0NDMzYjQ2NDM2NTJkYWZlNDFmMV8yLTctMS0xLTM2MTk4_2f213f54-5731-4671-8ee0-13624754792a">false</dei:EntitySmallBusiness>
    <dei:EntityEmergingGrowthCompany
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6MzhmNWNhZGQ3OGVmNDQzM2I0NjQzNjUyZGFmZTQxZjEvdGFibGVyYW5nZTozOGY1Y2FkZDc4ZWY0NDMzYjQ2NDM2NTJkYWZlNDFmMV80LTItMS0xLTM2MTk4_cd208603-c0f8-45be-97cc-d40ca928108e">false</dei:EntityEmergingGrowthCompany>
    <dei:IcfrAuditorAttestationFlag
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18zMjQx_5c55ced4-5cc5-47a5-a965-24cee41b5618">true</dei:IcfrAuditorAttestationFlag>
    <dei:EntityShellCompany
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18yMzQ2_390c594d-26be-4d3c-ad80-5d283ea52441">false</dei:EntityShellCompany>
    <dei:EntityPublicFloat
      contextRef="ia8228bdbbce54d7c9624a78d5d2b980e_I20220701"
      decimals="-6"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18yNjI1_9af110ec-80dd-4ae3-b513-5f638ba599e1"
      unitRef="usd">2002000000</dei:EntityPublicFloat>
    <dei:EntityCommonStockSharesOutstanding
      contextRef="ieb250817b6e542ed8d81042a73b3771f_I20230210"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18zMDIz_c3a0af2f-8586-4c1d-bbc5-c58e86c3b415"
      unitRef="shares">66139488</dei:EntityCommonStockSharesOutstanding>
    <dei:DocumentsIncorporatedByReferenceTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18zMjM3_da8d6458-1343-40a5-8e82-5f9c51d17d78">&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%"&gt;DOCUMENTS INCORPORATED BY REFERENCE&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;Portions of the registrant&#x2019;s definitive proxy statement for its 2023 annual meeting of stockholders are incorporated by reference in Items 10, 11, 12, 13 and 14 of Part&#160;III.&lt;/span&gt;&lt;/div&gt;</dei:DocumentsIncorporatedByReferenceTextBlock>
    <dei:AuditorName
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182NC9mcmFnOjc1OTMxMWI2YzAwODQ0MmRiYThkMGM0YmVkN2I3ODJmL3RleHRyZWdpb246NzU5MzExYjZjMDA4NDQyZGJhOGQwYzRiZWQ3Yjc4MmZfMTMyNjE_a2b21683-2ab8-4bad-b3ed-515442a93348">KPMG LLP</dei:AuditorName>
    <dei:AuditorLocation
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182NC9mcmFnOjc1OTMxMWI2YzAwODQ0MmRiYThkMGM0YmVkN2I3ODJmL3RleHRyZWdpb246NzU5MzExYjZjMDA4NDQyZGJhOGQwYzRiZWQ3Yjc4MmZfMTMyNjM_04b42724-9000-4985-a79f-790303d5041b">Santa Clara, California</dei:AuditorLocation>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNC0yLTEtMS0zNjE5OA_7440f237-88de-440c-a9ea-3724a9e90f70"
      unitRef="usd">79073000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNC00LTEtMS0zNjE5OA_3d75cbd4-d830-482c-bf2b-a04a6a7144d8"
      unitRef="usd">51333000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNS0yLTEtMS0zNjE5OA_e56a6463-8867-48bb-a8c8-423ee47150e8"
      unitRef="usd">162642000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNS00LTEtMS0zNjE5OA_62617aed-760a-4a41-a491-a9745188806f"
      unitRef="usd">153002000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNi0yLTEtMS0zNjE5OA_41f6692b-d263-4b27-8721-6d5848db8b21"
      unitRef="usd">93804000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNi00LTEtMS0zNjE5OA_959e0cf3-a491-4471-a012-16850797a9d4"
      unitRef="usd">85219000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:InventoryNet
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNy0yLTEtMS0zNjE5OA_28bb3ece-a1df-4897-9dc1-d01657870745"
      unitRef="usd">149160000</us-gaap:InventoryNet>
    <us-gaap:InventoryNet
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNy00LTEtMS0zNjE5OA_8ca588ac-4dc4-4d10-a933-eadf6b85f1b6"
      unitRef="usd">88880000</us-gaap:InventoryNet>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfOC0yLTEtMS0zNjE5OA_96f306cf-6095-404e-9c09-e7087f79dc37"
      unitRef="usd">62691000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfOC00LTEtMS0zNjE5OA_bb95d12e-fffa-4453-8b26-24361e7b4555"
      unitRef="usd">30811000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfOS0yLTEtMS0zNjE5OA_4745ecf8-539c-4c85-beb0-560e2fcbc01d"
      unitRef="usd">547370000</us-gaap:AssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfOS00LTEtMS0zNjE5OA_62fdc31c-63a3-4018-8230-2143feda23ee"
      unitRef="usd">409245000</us-gaap:AssetsCurrent>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTAtMi0xLTEtMzYxOTg_b43221ed-bf9d-46a0-b3d7-d8d76d12b52c"
      unitRef="usd">25834000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTAtNC0xLTEtMzYxOTg_ba052612-41e2-4742-8215-15f89627f5dd"
      unitRef="usd">21783000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTEtMi0xLTEtMzYxOTg_e06f0df6-ec23-4558-8734-ab7cc1cead51"
      unitRef="usd">9283000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTEtNC0xLTEtMzYxOTg_cae8e0f9-1531-460e-b191-45f8624b2eb7"
      unitRef="usd">12182000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:DeferredIncomeTaxAssetsNet
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTItMi0xLTEtMzYxOTg_fd40dd87-40ee-4eea-bf66-ecbf137852e9"
      unitRef="usd">167031000</us-gaap:DeferredIncomeTaxAssetsNet>
    <us-gaap:DeferredIncomeTaxAssetsNet
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTItNC0xLTEtMzYxOTg_c2673ac9-83c3-4fe6-969b-d4eb73f02df6"
      unitRef="usd">168962000</us-gaap:DeferredIncomeTaxAssetsNet>
    <us-gaap:Goodwill
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTMtMi0xLTEtMzYxOTg_521118b7-395a-4386-b940-f7f031af52a7"
      unitRef="usd">116175000</us-gaap:Goodwill>
    <us-gaap:Goodwill
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTMtNC0xLTEtMzYxOTg_7b47b5d3-ece4-4cc9-bb5a-40d5c369a97c"
      unitRef="usd">116175000</us-gaap:Goodwill>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTQtMi0xLTEtMzYxOTg_527ab7ee-d39b-4ac3-9d36-5915e5376936"
      unitRef="usd">19142000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTQtNC0xLTEtMzYxOTg_07d7bf08-54c9-45de-801e-26e6eac23180"
      unitRef="usd">13685000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:Assets
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTUtMi0xLTEtMzYxOTg_fcd9adf2-0c8b-466d-a548-55414d493f05"
      unitRef="usd">884835000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTUtNC0xLTEtMzYxOTg_99c26f2c-dcf8-44ec-827a-614ce6a24721"
      unitRef="usd">742032000</us-gaap:Assets>
    <us-gaap:AccountsPayableCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTgtMi0xLTEtMzYxOTg_6a430fe0-ace6-4617-a771-9c46c14fbbbb"
      unitRef="usd">41407000</us-gaap:AccountsPayableCurrent>
    <us-gaap:AccountsPayableCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTgtNC0xLTEtMzYxOTg_e74069e5-8893-4b44-b9bc-398da3813660"
      unitRef="usd">29061000</us-gaap:AccountsPayableCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTktMi0xLTEtMzYxOTg_cbca86ad-c54a-4986-94ba-473d2e2acc83"
      unitRef="usd">90474000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTktNC0xLTEtMzYxOTg_3cdbd83c-3919-48ad-8c61-91c3078976af"
      unitRef="usd">71597000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjAtMi0xLTEtMzYxOTg_835131e4-1730-449f-89d3-6a976fad3084"
      unitRef="usd">33541000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjAtNC0xLTEtMzYxOTg_05591d57-263d-4608-91de-5a953c405d66"
      unitRef="usd">27478000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjEtMi0xLTEtMzYxOTg_53bf71aa-73ed-4c70-8d15-83c76f1b5ef2"
      unitRef="usd">165422000</us-gaap:LiabilitiesCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjEtNC0xLTEtMzYxOTg_ce2d4376-64c4-4afd-a5c9-1723cb3821f8"
      unitRef="usd">128136000</us-gaap:LiabilitiesCurrent>
    <us-gaap:ContractWithCustomerLiabilityNoncurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjItMi0xLTEtMzYxOTg_0ef15dec-dd28-4d52-ba91-8a1c51ad2e59"
      unitRef="usd">25072000</us-gaap:ContractWithCustomerLiabilityNoncurrent>
    <us-gaap:ContractWithCustomerLiabilityNoncurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjItNC0xLTEtMzYxOTg_78e6d129-802d-41f5-8e84-3ee3bdba14fd"
      unitRef="usd">22016000</us-gaap:ContractWithCustomerLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjMtMi0xLTEtMzYxOTg_483ddae8-6530-4718-87ab-74fb2eeece25"
      unitRef="usd">8442000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjMtNC0xLTEtMzYxOTg_618a4d49-ab9e-485c-b841-da23fe704c71"
      unitRef="usd">12376000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjQtMi0xLTEtMzYxOTg_7c7eb3f6-6df0-4835-9957-1298645712bd"
      unitRef="usd">6332000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjQtNC0xLTEtMzYxOTg_837cec0f-2c29-43b4-b603-c8f939a814f7"
      unitRef="usd">11076000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:Liabilities
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjUtMi0xLTEtMzYxOTg_9692399c-f5ea-4797-b4e8-0bd0a470c67b"
      unitRef="usd">205268000</us-gaap:Liabilities>
    <us-gaap:Liabilities
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjUtNC0xLTEtMzYxOTg_83633c33-3454-48a4-b907-72da18c797f2"
      unitRef="usd">173604000</us-gaap:Liabilities>
    <us-gaap:CommitmentsAndContingencies
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjYtMi0xLTEtMzYxOTg_2dd7d4d3-4101-45e0-8613-06a86092ba5a"
      unitRef="usd"
      xsi:nil="true"/>
    <us-gaap:CommitmentsAndContingencies
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjYtNC0xLTEtMzYxOTg_e9de35e6-8355-4e33-89b7-4ebbfea73a78"
      unitRef="usd"
      xsi:nil="true"/>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl8yMQ_620381eb-588d-43fc-a0d6-b37927b09e67"
      unitRef="usdPerShare">0.025</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl8yMQ_a6d4dc5e-7f90-4913-968a-6807d4b3361b"
      unitRef="usdPerShare">0.025</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl8zNQ_a41d7077-3872-4311-b6db-2cb7b1959931"
      unitRef="shares">5000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl8zNQ_be6ae076-d8d3-4ccf-9fcb-f376c3f37131"
      unitRef="shares">5000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl81Nw_2e89c7dd-7479-46cf-bacd-53b34b28f830"
      unitRef="shares">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl81Nw_44134196-220e-4e7f-adc5-32c791377611"
      unitRef="shares">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl81Nw_8125353f-1c57-4ac6-a8c9-739c11c3e91f"
      unitRef="shares">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl81Nw_b5acc682-1add-4af0-a2b3-a6fd8860275b"
      unitRef="shares">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockValue
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMi0xLTEtMzYxOTg_a69c5684-2c8f-4c7d-aed5-4b5edb207265"
      unitRef="usd">0</us-gaap:PreferredStockValue>
    <us-gaap:PreferredStockValue
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtNC0xLTEtMzYxOTg_5542edad-b917-4e83-ac7b-fcc699deeeb8"
      unitRef="usd">0</us-gaap:PreferredStockValue>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M18xOA_11e16421-afd7-4b06-b70f-57ff48a1f1ae"
      unitRef="usdPerShare">0.025</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M18xOA_4d5d248f-2775-4ff9-9d01-3f3af20977b1"
      unitRef="usdPerShare">0.025</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M18zMg_5b5be5f5-2b16-405f-a286-b84c10594c9c"
      unitRef="shares">100000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M18zMg_6d70a73d-2dc4-418b-b424-b4365a6afd09"
      unitRef="shares">100000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M181NA_32636c17-0642-4940-beed-cfd20add5fa4"
      unitRef="shares">65735000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockSharesIssued
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M181NA_a4a3173b-523d-4dce-a875-a9eb661cf641"
      unitRef="shares">65735000</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M18xMTY_560bdaf8-6020-4665-98a1-c9a77df73648"
      unitRef="shares">64274000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockSharesIssued
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M18xMTY_80890246-b111-4424-9b24-58be070d44b5"
      unitRef="shares">64274000</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockValue
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMi0xLTEtMzYxOTg_d0486d05-784b-4180-b65b-9c93126cbbd0"
      unitRef="usd">1644000</us-gaap:CommonStockValue>
    <us-gaap:CommonStockValue
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktNC0xLTEtMzYxOTg_afaf9f37-3149-43ae-8228-a7782171e367"
      unitRef="usd">1607000</us-gaap:CommonStockValue>
    <us-gaap:AdditionalPaidInCapitalCommonStock
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzAtMi0xLTEtMzYxOTg_68fc6531-9e87-496e-a876-4504390e82ea"
      unitRef="usd">1070100000</us-gaap:AdditionalPaidInCapitalCommonStock>
    <us-gaap:AdditionalPaidInCapitalCommonStock
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzAtNC0xLTEtMzYxOTg_32ab1619-710f-4dc8-8bea-7501dbae63fe"
      unitRef="usd">997855000</us-gaap:AdditionalPaidInCapitalCommonStock>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzEtMi0xLTEtMzYxOTg_41d2411e-271f-442a-974e-3fcb39acb9b8"
      unitRef="usd">-2473000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzEtNC0xLTEtMzYxOTg_24496e97-c374-4e39-99aa-15356e55d78a"
      unitRef="usd">-320000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzItMi0xLTEtMzYxOTg_a6462414-9a06-4c46-b2a9-a6e6a28decf7"
      unitRef="usd">-389704000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzItNC0xLTEtMzYxOTg_5cd51b84-5d3c-46a5-9612-e43c0561d4d9"
      unitRef="usd">-430714000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:StockholdersEquity
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzMtMi0xLTEtMzYxOTg_cf79c888-0231-47d8-89e6-a113e8c1da4c"
      unitRef="usd">679567000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzMtNC0xLTEtMzYxOTg_afd3a1bf-6dcf-436c-9e03-9f50579adb73"
      unitRef="usd">568428000</us-gaap:StockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzQtMi0xLTEtMzYxOTg_09568e2c-d601-49b2-9836-71d444c21e0f"
      unitRef="usd">884835000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzQtNC0xLTEtMzYxOTg_392bff09-1284-46cd-8bd4-18fc8ac1c125"
      unitRef="usd">742032000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMy0yLTEtMS0zODI0NQ_c9cff09c-8936-418b-9198-c7cd48519cc6"
      unitRef="usd">867827000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMy00LTEtMS0zODI0NQ_8ebcc7d8-3379-44cd-b97b-f08e9d5aa35f"
      unitRef="usd">679394000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMy02LTEtMS0zODI0NQ_390687d6-27df-4ed8-b028-9a0ad431cd22"
      unitRef="usd">541239000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfNC0yLTEtMS0zODI0NQ_9c44dc58-5855-4dd3-b17d-8703f54c7741"
      unitRef="usd">432399000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfNC00LTEtMS0zODI0NQ_c794b154-f759-4f4f-9eb7-76e9f07c5540"
      unitRef="usd">322807000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfNC02LTEtMS0zODI0NQ_ab64cbd7-2ac0-430b-a343-2f05fc713981"
      unitRef="usd">274220000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:GrossProfit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTAtMi0xLTEtMzYxOTg_e9c9c353-3084-4f21-a783-541db9f43c38"
      unitRef="usd">435428000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTAtNC0xLTEtMzYxOTg_c74054e7-3ed5-4537-9e3c-b76b8437200b"
      unitRef="usd">356587000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTAtNi0xLTEtMzYxOTg_584ba3c6-5976-43d4-a4cf-f32634535f03"
      unitRef="usd">267019000</us-gaap:GrossProfit>
    <us-gaap:SellingAndMarketingExpense
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTItMi0xLTEtMzYxOTg_982739fe-cd81-436d-9951-ff18162d87e8"
      unitRef="usd">174549000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:SellingAndMarketingExpense
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTItNC0xLTEtMzYxOTg_2b6ab719-79c4-4b20-8855-cd835dee8422"
      unitRef="usd">125909000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:SellingAndMarketingExpense
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTItNi0xLTEtMzYxOTg_9a53e5f1-81b2-45a0-8a9f-af04d80bcfc2"
      unitRef="usd">94185000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTMtMi0xLTEtMzYxOTg_74816185-bf53-4e95-a27b-bfa02979a77b"
      unitRef="usd">131994000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTMtNC0xLTEtMzYxOTg_5d5c4485-4d4c-4cb4-8b5a-273da864b324"
      unitRef="usd">101747000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTMtNi0xLTEtMzYxOTg_1822deab-6483-4a52-8256-1735d4baf389"
      unitRef="usd">85258000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTQtMi0xLTEtMzYxOTg_2514435c-263e-4611-918a-1e463efd0598"
      unitRef="usd">76275000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTQtNC0xLTEtMzYxOTg_13033071-fc6a-48a5-9592-00abbf1bc9cb"
      unitRef="usd">55779000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTQtNi0xLTEtMzYxOTg_1de5b320-9562-4dc8-b5b2-41b73cbe2336"
      unitRef="usd">44444000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:RestructuringCharges
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTUtMi0xLTEtMzYxOTg_a01e0a02-a48b-4713-bee4-9994e90bc84b"
      unitRef="usd">0</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTUtNC0xLTEtMzYxOTg_a90e7190-a291-4138-99bf-a6311324b475"
      unitRef="usd">-786000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTUtNi0xLTEtMzYxOTg_b93650b4-e4f2-4da8-a4d7-13d736e1c55e"
      unitRef="usd">6286000</us-gaap:RestructuringCharges>
    <us-gaap:OperatingExpenses
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTctMi0xLTEtMzYxOTg_da204b5d-ffad-4681-9dc3-2f8abdfcf9e3"
      unitRef="usd">382818000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingExpenses
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTctNC0xLTEtMzYxOTg_31fc03e3-e301-4bdd-ad7d-251f49af4337"
      unitRef="usd">282649000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingExpenses
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTctNi0xLTEtMzYxOTg_044e8b46-5e23-4eab-ab49-22706a2e1c73"
      unitRef="usd">230173000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingIncomeLoss
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTgtMi0xLTEtMzYxOTg_bcd996a2-481f-45ab-b513-26ab6b8bb1b7"
      unitRef="usd">52610000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTgtNC0xLTEtMzYxOTg_46f17830-e76f-4600-93b0-d93617b64c4c"
      unitRef="usd">73938000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTgtNi0xLTEtMzYxOTg_bd7582d9-5288-4c0d-b903-c792d380b064"
      unitRef="usd">36846000</us-gaap:OperatingIncomeLoss>
    <us-gaap:InvestmentIncomeNet
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjAtMi0xLTEtMzYxOTg_7cc2a909-f400-48c4-a37b-082fc1c8fc6d"
      unitRef="usd">2009000</us-gaap:InvestmentIncomeNet>
    <us-gaap:InvestmentIncomeNet
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjAtNC0xLTEtMzYxOTg_34d14db9-0cc8-4bb6-aa65-35bbc4b01e4b"
      unitRef="usd">-402000</us-gaap:InvestmentIncomeNet>
    <us-gaap:InvestmentIncomeNet
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjAtNi0xLTEtMzYxOTg_d54e188d-e925-43e6-8430-e705d078473b"
      unitRef="usd">-1585000</us-gaap:InvestmentIncomeNet>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjEtMi0xLTEtMzYxOTg_45632e1c-018f-4cd0-9fb0-eda81c3560bf"
      unitRef="usd">-577000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjEtNC0xLTEtMzYxOTg_5b0fb259-805e-4f2f-94d8-903de07d5414"
      unitRef="usd">-882000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjEtNi0xLTEtMzYxOTg_93032e7d-0c9e-4a9c-b544-c413d85b3bee"
      unitRef="usd">-977000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:NonoperatingIncomeExpense
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjItMi0xLTEtMzYxOTg_90a6e578-9fa9-4c95-9169-d9234d99ead3"
      unitRef="usd">1432000</us-gaap:NonoperatingIncomeExpense>
    <us-gaap:NonoperatingIncomeExpense
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjItNC0xLTEtMzYxOTg_5b4c570f-69fa-46ec-89b9-d3ad296b909e"
      unitRef="usd">-1284000</us-gaap:NonoperatingIncomeExpense>
    <us-gaap:NonoperatingIncomeExpense
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjItNi0xLTEtMzYxOTg_9adfb2a7-8b5f-4adf-bf92-4c02ae206241"
      unitRef="usd">-2562000</us-gaap:NonoperatingIncomeExpense>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjMtMi0xLTEtMzYxOTg_24b907fb-5c4b-41af-9aa2-799f87827643"
      unitRef="usd">54042000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjMtNC0xLTEtMzYxOTg_ec69310c-068b-447d-aa8f-ad3df8c01959"
      unitRef="usd">72654000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjMtNi0xLTEtMzYxOTg_bdca91b5-ae2e-4bbc-9228-6887a95fe619"
      unitRef="usd">34284000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjQtMi0xLTEtMzYxOTg_8f0933e1-96cc-4e41-9c2f-b001fac7d6b2"
      unitRef="usd">13032000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjQtNC0xLTEtMzYxOTg_bc9cd1f1-27bb-44bb-81e4-1370b7989cd4"
      unitRef="usd">-165724000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjQtNi0xLTEtMzYxOTg_e89c58e1-0fad-4ae2-b1cb-56d266426251"
      unitRef="usd">800000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:NetIncomeLoss
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjUtMi0xLTEtMzYxOTg_430e13eb-a128-4513-a53e-d2cb324cfb2c"
      unitRef="usd">41010000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjUtNC0xLTEtMzYxOTg_d0ed98ee-b148-4ade-b58a-23c5d2c1dc4e"
      unitRef="usd">238378000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjUtNi0xLTEtMzYxOTg_cf03a29d-9388-4983-ae23-0625edeb4c49"
      unitRef="usd">33484000</us-gaap:NetIncomeLoss>
    <us-gaap:EarningsPerShareBasic
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjctMi0xLTEtMzYxOTg_f71cece1-69c7-4c40-aa3c-4838f8e946c4"
      unitRef="usdPerShare">0.63</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjctNC0xLTEtMzYxOTg_2d809c8f-ed2a-47e8-bdff-d2d45f28b0cc"
      unitRef="usdPerShare">3.77</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjctNi0xLTEtMzYxOTg_93e53e05-42ba-4d1f-8f03-d1f74ecc6916"
      unitRef="usdPerShare">0.57</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjgtMi0xLTEtMzYxOTg_ad37b260-5315-4208-8c1d-d4f18d20f4b7"
      unitRef="usdPerShare">0.60</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjgtNC0xLTEtMzYxOTg_5bff29d7-d33e-48bc-8f5b-00cda3e22110"
      unitRef="usdPerShare">3.51</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjgtNi0xLTEtMzYxOTg_93dd695e-5e37-4d9e-abd1-91660ae8d9d1"
      unitRef="usdPerShare">0.54</us-gaap:EarningsPerShareDiluted>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzAtMi0xLTEtMzYxOTg_c883f4cd-d316-4667-a423-d97948538d41"
      unitRef="shares">65058000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzAtNC0xLTEtMzYxOTg_96eb1476-d398-4248-a651-1c52088df4ca"
      unitRef="shares">63277000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzAtNi0xLTEtMzYxOTg_ce6ac25b-d28a-4bd9-bcbb-78a14c5c30af"
      unitRef="shares">59074000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzEtMi0xLTEtMzYxOTg_15ec62e3-4f93-465e-b41e-a772f07f67df"
      unitRef="shares">68911000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzEtNC0xLTEtMzYxOTg_1340c32d-350e-4a05-9678-4c622b460785"
      unitRef="shares">67856000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzEtNi0xLTEtMzYxOTg_b522f9b8-1e02-4f70-8bbc-65dc193f10f0"
      unitRef="shares">61998000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:NetIncomeLoss
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzMtMi0xLTEtMzYxOTg_b7d71868-4ec5-432f-bd8b-9d931b09517c"
      unitRef="usd">41010000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzMtNC0xLTEtMzYxOTg_909d3210-04eb-4545-bd7d-c7dff8f9a763"
      unitRef="usd">238378000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzMtNi0xLTEtMzYxOTg_13979068-ad92-4497-8db7-8d8cabcd63e1"
      unitRef="usd">33484000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzctMi0xLTEtMzYxOTg_ec4fa937-9375-48fd-83eb-71345795b18f"
      unitRef="usd">-1521000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzctNC0xLTEtMzYxOTg_61f32544-8d92-4e70-b4a0-f328b7b405dd"
      unitRef="usd">-179000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzctNi0xLTEtMzYxOTg_1482d684-3a7f-4da2-ba3a-303a50552a4e"
      unitRef="usd">0</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzgtMi0xLTEtMzYxOTg_cb918c74-dfd0-4926-9138-96f1102f0a5e"
      unitRef="usd">-632000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzgtNC0xLTEtMzYxOTg_4771ddc5-b8d7-424c-9ccc-9475305db6b7"
      unitRef="usd">50000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzgtNi0xLTEtMzYxOTg_52091167-b9bd-4000-8a53-05e74772c5ec"
      unitRef="usd">663000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzktMi0xLTEtMzYxOTg_318633c9-7153-4f02-820d-65676b7293c3"
      unitRef="usd">-2153000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzktNC0xLTEtMzYxOTg_d775c77b-dc54-4a27-943a-2e1c0acb82d7"
      unitRef="usd">-129000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzktNi0xLTEtMzYxOTg_76b9c673-30fe-4c74-9668-65a236a6c320"
      unitRef="usd">663000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfNDAtMi0xLTEtMzYxOTg_c8bd61de-0833-4bc5-b505-2c354836c7d2"
      unitRef="usd">38857000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfNDAtNC0xLTEtMzYxOTg_d1b37042-39c3-4d0b-a46f-71fcb6488736"
      unitRef="usd">238249000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfNDAtNi0xLTEtMzYxOTg_359fec31-295d-46dc-aa52-a2751f160771"
      unitRef="usd">34147000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="ie82c4a028e2f46f49e00eb16a6221418_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNC0yLTEtMS0zNjE5OA_9c5e4c8a-68c6-4404-95df-a45dc653f43c"
      unitRef="shares">56448000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="ie82c4a028e2f46f49e00eb16a6221418_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNC00LTEtMS0zNjE5OA_dbdb909a-4dc0-49d2-b9c6-b6293b0b7a2e"
      unitRef="usd">1545000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i0c590b88b1f64a2a9a73b5cdd3ac6d16_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNC02LTEtMS0zNjE5OA_13ec39b5-9947-46ce-90af-4761834ece54"
      unitRef="usd">895899000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i1381a46e2faf489e8372f8f632cfa082_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNC04LTEtMS0zNjE5OA_0d9c67f3-8a13-4c5e-b097-419e5b4e9ac2"
      unitRef="usd">-854000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i3c40cef6156346cb9dfc20f4aa283283_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNC0xMC0xLTEtMzYxOTg_e12065e0-3973-4abb-be91-c8b3b4a813aa"
      unitRef="usd">-702576000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i221678b32f244027820fdddd22d493cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNC0xMi0xLTEtMzYxOTg_15bea499-7542-43f8-a40a-08b17c454881"
      unitRef="usd">-39986000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ibe3ffb6b029948b89bd038665fa57d44_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNC0xNC0xLTEtMzYxOTg_bd44ec31-35a9-4a45-a817-ffb87af96b8a"
      unitRef="usd">154028000</us-gaap:StockholdersEquity>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i62dee52382d14e1f9e489331c0ab3f10_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNS02LTEtMS0zNjE5OA_1b6666c8-1e83-4f0f-9a2c-ea7176ce259a"
      unitRef="usd">13960000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNS0xNC0xLTEtMzYxOTg_ea8fd415-995b-4a30-804b-9105c74631cd"
      unitRef="usd">13960000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="i2d65a910a2a941fab75505cb7423e31f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNi0yLTEtMS0zNjE5OA_4f07ea59-e3ca-4cee-9ed6-37796e8c21d9"
      unitRef="shares">2454000</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="i2d65a910a2a941fab75505cb7423e31f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNi00LTEtMS0zNjE5OA_9f71183c-cb74-4609-9d01-6a45b52d5409"
      unitRef="usd">60000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="i62dee52382d14e1f9e489331c0ab3f10_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNi02LTEtMS0zNjE5OA_6edc14e6-413b-498b-a309-945a8a480078"
      unitRef="usd">18067000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNi0xNC0xLTEtMzYxOTg_84b1348e-2916-46b7-9232-394b025bc1f2"
      unitRef="usd">18127000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodSharesNewIssues
      contextRef="i2d65a910a2a941fab75505cb7423e31f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNy0yLTEtMS0zNjcxOA_1de58878-9e1d-4060-8c68-9e59b2e7e6c6"
      unitRef="shares">3220000</us-gaap:StockIssuedDuringPeriodSharesNewIssues>
    <us-gaap:StockIssuedDuringPeriodValueNewIssues
      contextRef="i2d65a910a2a941fab75505cb7423e31f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNy00LTEtMS0zNjcxOA_165d6276-3d15-496b-a8da-b9c9c340ef58"
      unitRef="usd">82000</us-gaap:StockIssuedDuringPeriodValueNewIssues>
    <us-gaap:StockIssuedDuringPeriodValueNewIssues
      contextRef="i62dee52382d14e1f9e489331c0ab3f10_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNy02LTEtMS0zNjcxOA_e2873cf2-3184-4c6b-b519-e155406a47ad"
      unitRef="usd">59981000</us-gaap:StockIssuedDuringPeriodValueNewIssues>
    <us-gaap:StockIssuedDuringPeriodValueNewIssues
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNy0xNC0xLTEtMzk2MjM_c58cea93-f79f-4b6b-95d4-eb4ccb46a5cd"
      unitRef="usd">60063000</us-gaap:StockIssuedDuringPeriodValueNewIssues>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="i2d65a910a2a941fab75505cb7423e31f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOC00LTEtMS0zNjcxOA_8be1b54a-83c4-4796-ae5f-646c6f927fa2"
      unitRef="usd">134000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="i62dee52382d14e1f9e489331c0ab3f10_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOC02LTEtMS0zNjcxOA_65cabe81-268f-4bf9-95d4-2980953c89fc"
      unitRef="usd">39852000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="i7643f564c7844d13b40e6df62ba9ce35_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOC0xMi0xLTEtMzY3MTg_dc6bfa71-9e72-49a6-bee3-c5b207ee9fde"
      unitRef="usd">-39986000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOC0xNC0xLTEtMzk2MjM_0638cf78-211d-4446-bdd1-3565d46fd14b"
      unitRef="usd">0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:NetIncomeLoss
      contextRef="i1103780cf7bc45888c71a420256ec31e_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNy0xMC0xLTEtMzYxOTg_15d083cb-5501-4a06-a9ad-516a905a40ef"
      unitRef="usd">33484000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNy0xNC0xLTEtMzYxOTg_c005327b-c3b5-40aa-84fb-095422cd8a84"
      unitRef="usd">33484000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="ieb0737a6b805496eb64c267495cdc455_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOC04LTEtMS0zNjE5OA_393d18bd-f89e-4816-b9f8-860a2809995e"
      unitRef="usd">663000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOC0xNC0xLTEtMzYxOTg_ac968c86-46f1-4f39-8aad-01e1ea4ce0aa"
      unitRef="usd">663000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i5b9a216ba92f4662a6c5e29e4660d201_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOS0yLTEtMS0zNjE5OA_0d15810e-5c11-4663-b323-5b68546b0b31"
      unitRef="shares">62122000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i5b9a216ba92f4662a6c5e29e4660d201_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOS00LTEtMS0zNjE5OA_687fecf1-c714-492f-8986-ef7dec22d24e"
      unitRef="usd">1553000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i2b2de5dc230f469ebf57510dcb995ef8_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOS02LTEtMS0zNjE5OA_a9e0e002-cc12-45a3-b664-3d635831a527"
      unitRef="usd">948055000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i70828112df2e4dc0aacf44aeade1a12c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOS04LTEtMS0zNjE5OA_8f9b5fc0-7fc0-494b-94a6-09ddb8a16d8e"
      unitRef="usd">-191000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="id00d493640324cd0b73797ced1093269_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOS0xMC0xLTEtMzYxOTg_dad957e2-2a5d-4afc-afb3-ac09f4dc6222"
      unitRef="usd">-669092000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ic512b19e711643f59c98f75953b49777_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOS0xMi0xLTEtMzYxOTg_c85d0e08-38e2-4dd4-83a0-97eba2bfcafe"
      unitRef="usd">0</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i5647c99c6e924e9681658be971eaeb0b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOS0xNC0xLTEtMzYxOTg_7bda2114-4cff-4220-b2ed-f31576f73122"
      unitRef="usd">280325000</us-gaap:StockholdersEquity>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="ifc02f355b98046449ab7a198a475e208_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTAtNi0xLTEtMzYxOTg_53febdc7-98ed-4628-9629-521b9ccb14db"
      unitRef="usd">24230000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTAtMTQtMS0xLTM2MTk4_53512420-0e1f-4aa1-912f-98a8883bf422"
      unitRef="usd">24230000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="iced057490ecb40f8af711b91b2a3800d_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTEtMi0xLTEtMzYxOTg_0cc419de-a035-456e-b657-e0ea0b1bf1a2"
      unitRef="shares">2152000</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="iced057490ecb40f8af711b91b2a3800d_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTEtNC0xLTEtMzYxOTg_d3a69544-e48e-47aa-b4a4-a81b82cd2702"
      unitRef="usd">54000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="ifc02f355b98046449ab7a198a475e208_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTEtNi0xLTEtMzYxOTg_31f7a500-6894-4c29-a891-313cc7965bcf"
      unitRef="usd">25570000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTEtMTQtMS0xLTM2MTk4_0a64601a-58c8-49ca-a00d-b85dda879cb2"
      unitRef="usd">25624000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:NetIncomeLoss
      contextRef="i338d4f0ba4c9446fa367007416d30e0e_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTQtMTAtMS0xLTM2MTk4_dcc1b6de-f185-4f70-a806-b9503c4c4a4d"
      unitRef="usd">238378000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTQtMTQtMS0xLTM2MTk4_c442cca2-aad9-4793-99d3-da5dc66b8528"
      unitRef="usd">238378000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i00b2f6ea6d574881a414d40c48f4b09f_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTUtOC0xLTEtMzYxOTg_1d5269e0-68ea-45b0-86f3-e55059825c88"
      unitRef="usd">-129000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTUtMTQtMS0xLTM2MTk4_69eeb721-7610-4463-911d-8bfc05a51574"
      unitRef="usd">-129000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="if9d416b760f04d82b7305c51cd60f965_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTYtMi0xLTEtMzYxOTg_d02bdb5f-fa3a-41d1-99e7-37998ef82535"
      unitRef="shares">64274000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="if9d416b760f04d82b7305c51cd60f965_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTYtNC0xLTEtMzYxOTg_b6a90e53-d13d-4e44-a843-62abfb86f1b8"
      unitRef="usd">1607000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i6558c3e05bc14f9787f4c77c4cbf02da_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTYtNi0xLTEtMzYxOTg_b223fa03-4aee-4c79-979d-b691758eb79b"
      unitRef="usd">997855000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i7b351fe8ba1143289315d78b03323c97_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTYtOC0xLTEtMzYxOTg_21a3e11b-de93-4ea0-a2c0-d77b40475737"
      unitRef="usd">-320000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i62e8d30d767641039a22982dd9da4de2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTYtMTAtMS0xLTM2MTk4_1378e759-0b34-4c2d-919f-e8575d5d2b61"
      unitRef="usd">-430714000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ib57a8227187a4016b87def7464807008_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTYtMTItMS0xLTM2MTk4_f4a45b45-0665-455c-91c4-4038d8132728"
      unitRef="usd">0</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTYtMTQtMS0xLTM2MTk4_26bbd1c6-7499-4693-a4aa-e56675d700c9"
      unitRef="usd">568428000</us-gaap:StockholdersEquity>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i8f14ec41ce5b42bdb7290c9b661e7b40_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTctNi0xLTEtMzYxOTg_c2ecd980-0e33-4e25-aaa4-4c18a277f835"
      unitRef="usd">44826000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTctMTQtMS0xLTM2MTk4_57d6013e-baf7-437b-830e-cfd246cc1819"
      unitRef="usd">44826000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="i0e63d4cd16584e67be8964684fea4f2b_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTgtMi0xLTEtMzYxOTg_b86dc833-5e91-4f5f-aa70-bbb0f723a09b"
      unitRef="shares">1461000</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="i0e63d4cd16584e67be8964684fea4f2b_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTgtNC0xLTEtMzYxOTg_e8dc38f8-c2bd-41ed-927c-695418d8afc9"
      unitRef="usd">37000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="i8f14ec41ce5b42bdb7290c9b661e7b40_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTgtNi0xLTEtMzYxOTg_0c0dd9d0-a10a-4958-bc74-48f74f61f1e4"
      unitRef="usd">27419000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTgtMTQtMS0xLTM2MTk4_0736402e-1437-48ab-aeec-92ad752480cf"
      unitRef="usd">27456000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:NetIncomeLoss
      contextRef="i99e1660b325840b39b58d880b4cb6c3a_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTktMTAtMS0xLTM2MTk4_60eb70e8-f497-4785-8d39-88fba95a7396"
      unitRef="usd">41010000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTktMTQtMS0xLTM2MTk4_0475efb7-57ea-4dda-99d6-f73f14da88a5"
      unitRef="usd">41010000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="iae919b947c1f4fd8a9545cb83d022877_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjAtOC0xLTEtMzYxOTg_5d3f9a1e-a514-4452-a7b4-a2b1313ba121"
      unitRef="usd">-2153000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjAtMTQtMS0xLTM2MTk4_c56dbf53-3469-42a8-b368-1287a0ae0d7b"
      unitRef="usd">-2153000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="ibf694ca5c1784abd900378a9d5cac4c9_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjEtMi0xLTEtMzYxOTg_2476adcc-dc0e-4030-b76d-56f5c83415e3"
      unitRef="shares">65735000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="ibf694ca5c1784abd900378a9d5cac4c9_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjEtNC0xLTEtMzYxOTg_a4a79e81-dc5a-4760-a8a7-a24593c99524"
      unitRef="usd">1644000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i1b11ec9c87f647eda542f47bd568cae6_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjEtNi0xLTEtMzYxOTg_52e53f9d-bf6e-48eb-accf-0b53fa6d3088"
      unitRef="usd">1070100000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i94330ed0d9cb44ad89b11f0416a40439_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjEtOC0xLTEtMzYxOTg_97dbe019-422c-4285-8c52-d5b12f5a16d2"
      unitRef="usd">-2473000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i2fc9c021dca34b31add79cf37c24ff19_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjEtMTAtMS0xLTM2MTk4_1d841f55-7085-43f9-a4db-41e74de22c87"
      unitRef="usd">-389704000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ib9005996b5004e2ea8204ab8956288bf_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjEtMTItMS0xLTM2MTk4_e11149b7-e608-41e9-8334-e17ad0b4a154"
      unitRef="usd">0</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjEtMTQtMS0xLTM2MTk4_973b8fef-284f-4d8f-8d83-2de953258666"
      unitRef="usd">679567000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMy0yLTEtMS0zNjE5OA_374fc9b9-5f76-480b-b50c-debe5c9d410f"
      unitRef="usd">41010000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMy00LTEtMS0zNjE5OA_995443b1-d5d5-4c4d-b4ba-2c393a9f7988"
      unitRef="usd">238378000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMy02LTEtMS0zNjE5OA_8ac9de10-36b3-4592-9c2f-fb69994b0139"
      unitRef="usd">33484000</us-gaap:NetIncomeLoss>
    <us-gaap:ShareBasedCompensation
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNS0yLTEtMS0zNjE5OA_1a7214e6-0cdc-4a0b-a592-3b7fb7b1d8e4"
      unitRef="usd">44826000</us-gaap:ShareBasedCompensation>
    <us-gaap:ShareBasedCompensation
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNS00LTEtMS0zNjE5OA_49323b01-c25e-40d7-802f-4f1871b1d2fc"
      unitRef="usd">24230000</us-gaap:ShareBasedCompensation>
    <us-gaap:ShareBasedCompensation
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNS02LTEtMS0zNjE5OA_4030ddac-fa7e-4c0a-a138-a69275b94e75"
      unitRef="usd">13960000</us-gaap:ShareBasedCompensation>
    <us-gaap:Depreciation
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNi0yLTEtMS0zNjE5OA_cde8cadd-d7ae-45c3-affa-29bc4558d4ba"
      unitRef="usd">14315000</us-gaap:Depreciation>
    <us-gaap:Depreciation
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNi00LTEtMS0zNjE5OA_06c01a6e-9f90-459e-a9a9-805ef66c9476"
      unitRef="usd">15012000</us-gaap:Depreciation>
    <us-gaap:Depreciation
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNi02LTEtMS0zNjE5OA_ba4a9d21-da0b-429d-aa27-a78c8dae7b6c"
      unitRef="usd">13718000</us-gaap:Depreciation>
    <us-gaap:DeferredIncomeTaxesAndTaxCredits
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNy0yLTEtMS0zNjE5OA_6670ca3d-5141-4f90-9149-debc85e19141"
      unitRef="usd">1932000</us-gaap:DeferredIncomeTaxesAndTaxCredits>
    <us-gaap:DeferredIncomeTaxesAndTaxCredits
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNy00LTEtMS0zNjE5OA_34d444d2-478e-4ec2-a9e0-353e6240e60c"
      unitRef="usd">-168426000</us-gaap:DeferredIncomeTaxesAndTaxCredits>
    <us-gaap:DeferredIncomeTaxesAndTaxCredits
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNy02LTEtMS0zNjE5OA_d184797d-352e-4448-9e42-3b2b9696b454"
      unitRef="usd">0</us-gaap:DeferredIncomeTaxesAndTaxCredits>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfOC0yLTEtMS0zNzQwNg_e6f9e704-3889-43c4-8cbf-0cdcfdd68768"
      unitRef="usd">1146000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfOC00LTEtMS0zNzQwNg_c866bb87-6c7e-4ca6-a1df-a6c8270eff9f"
      unitRef="usd">0</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfOC02LTEtMS0zNzQwNg_087a59fb-92b6-4325-a2f2-aefa07910d03"
      unitRef="usd">0</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:GainLossOnDispositionOfAssets
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfOC0yLTEtMS0zNjE5OA_b80cc51b-d87a-4bab-bb25-9a3d3788928c"
      unitRef="usd">0</us-gaap:GainLossOnDispositionOfAssets>
    <us-gaap:GainLossOnDispositionOfAssets
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfOC00LTEtMS0zNjE5OA_67892efb-d2eb-4f10-948a-78ca97a7e480"
      unitRef="usd">0</us-gaap:GainLossOnDispositionOfAssets>
    <us-gaap:GainLossOnDispositionOfAssets
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfOC02LTEtMS0zNjE5OA_57d86dcd-3fc4-40dc-95f1-014fc0aaab93"
      unitRef="usd">-3914000</us-gaap:GainLossOnDispositionOfAssets>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTAtMi0xLTEtMzYxOTg_f1d59ca7-6afc-4a61-b972-6429c64c7d16"
      unitRef="usd">8585000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTAtNC0xLTEtMzYxOTg_8192cbf2-2f5e-437a-af40-14542226cfc4"
      unitRef="usd">15800000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTAtNi0xLTEtMzYxOTg_11503d39-eaba-4f2c-b08f-7bdd209c3414"
      unitRef="usd">22910000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTEtMi0xLTEtMzYxOTg_97cf7d31-64f4-4230-80e8-832ed6667d82"
      unitRef="usd">60280000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTEtNC0xLTEtMzYxOTg_a5db9ced-399e-46c9-a565-d89738a7f4e3"
      unitRef="usd">36612000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTEtNi0xLTEtMzYxOTg_32d91333-49b6-443f-a4da-c590e5e12fa8"
      unitRef="usd">12116000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTItMi0xLTEtMzYxOTg_b2549220-2c20-4168-8c0e-ce69b19494c1"
      unitRef="usd">38359000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTItNC0xLTEtMzYxOTg_83f7688c-282c-403e-98fd-d694a125a02a"
      unitRef="usd">27074000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTItNi0xLTEtMzYxOTg_cfa8d802-2f2d-427a-8248-258900890da6"
      unitRef="usd">-773000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTMtMi0xLTEtMzYxOTg_2cc582b2-f688-4256-8f92-984241089669"
      unitRef="usd">12111000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTMtNC0xLTEtMzYxOTg_1715cd15-dc5c-4048-b973-a25443ffc21a"
      unitRef="usd">16025000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTMtNi0xLTEtMzYxOTg_baa06cf9-771f-47f8-926c-22a0bffcc207"
      unitRef="usd">2190000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccruedLiabilities
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTQtMi0xLTEtMzYxOTg_4141405f-5d16-493d-819e-07c0abe5611b"
      unitRef="usd">20919000</us-gaap:IncreaseDecreaseInAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInAccruedLiabilities
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTQtNC0xLTEtMzYxOTg_2c04f829-577f-4fd9-884a-cedac97b25a0"
      unitRef="usd">3273000</us-gaap:IncreaseDecreaseInAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInAccruedLiabilities
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTQtNi0xLTEtMzYxOTg_83cab1e2-6177-4dfc-92c0-2ae318d3121c"
      unitRef="usd">11922000</us-gaap:IncreaseDecreaseInAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInDeferredRevenue
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTUtMi0xLTEtMzYxOTg_6760df14-99c2-4326-aa1f-a67746bd6074"
      unitRef="usd">9118000</us-gaap:IncreaseDecreaseInDeferredRevenue>
    <us-gaap:IncreaseDecreaseInDeferredRevenue
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTUtNC0xLTEtMzYxOTg_1b84291e-6674-4290-9e9a-0d8d817a9e1b"
      unitRef="usd">10400000</us-gaap:IncreaseDecreaseInDeferredRevenue>
    <us-gaap:IncreaseDecreaseInDeferredRevenue
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTUtNi0xLTEtMzYxOTg_c97e7d2d-4898-49dd-811d-d19c94fc77a2"
      unitRef="usd">3596000</us-gaap:IncreaseDecreaseInDeferredRevenue>
    <us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTYtMi0xLTEtMzYxOTg_aaeace7a-823e-4368-a3cf-de1c9d76c4e2"
      unitRef="usd">-8678000</us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities>
    <us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTYtNC0xLTEtMzYxOTg_a6b13a19-12e5-4af4-a992-9c9882617e0d"
      unitRef="usd">-2613000</us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities>
    <us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTYtNi0xLTEtMzYxOTg_be02ad42-7ba1-4850-8dbb-cb6a1346fb16"
      unitRef="usd">2878000</us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTctMi0xLTEtMzYxOTg_8d62e837-54bc-427c-af5b-40e89295d346"
      unitRef="usd">27183000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTctNC0xLTEtMzYxOTg_fe6650a9-e5c2-429a-a435-34c0224a9792"
      unitRef="usd">56793000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTctNi0xLTEtMzYxOTg_b5345dcd-81f6-4548-9ca9-3c2a4083ef41"
      unitRef="usd">51409000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTktMi0xLTEtMzYxOTg_612152f4-befa-4816-9950-00cb0f70edf4"
      unitRef="usd">14067000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTktNC0xLTEtMzYxOTg_9f625507-5ef6-4aa6-951c-25cd71cf15fd"
      unitRef="usd">10463000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTktNi0xLTEtMzYxOTg_bbb6fe79-2d86-4bcf-869f-e0bcaefee7e3"
      unitRef="usd">7819000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquireMarketableSecurities
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjAtMi0xLTEtMzYxOTg_051d20b3-1265-4124-8626-afc963090d66"
      unitRef="usd">191403000</us-gaap:PaymentsToAcquireMarketableSecurities>
    <us-gaap:PaymentsToAcquireMarketableSecurities
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjAtNC0xLTEtMzYxOTg_7916e84a-2fe2-43ef-aacb-0d20b31b7c14"
      unitRef="usd">298092000</us-gaap:PaymentsToAcquireMarketableSecurities>
    <us-gaap:PaymentsToAcquireMarketableSecurities
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjAtNi0xLTEtMzYxOTg_5a9ae3d6-6426-4a49-ab49-de505ee98a9a"
      unitRef="usd">72982000</us-gaap:PaymentsToAcquireMarketableSecurities>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjItMi0xLTEtMzYxOTg_0a01cb6f-91c4-4ce0-89ee-67f86faf132b"
      unitRef="usd">181388000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjItNC0xLTEtMzYxOTg_f5cebf24-5196-4a12-8934-521d1fd70ad7"
      unitRef="usd">197894000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjItNi0xLTEtMzYxOTg_58420d25-0f08-4242-8fa9-a04c73064ea1"
      unitRef="usd">20000000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjMtMi0xLTEtMzYxOTg_1cfba3c1-363f-49c5-a891-d6605d1d8cca"
      unitRef="usd">-24082000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjMtNC0xLTEtMzYxOTg_7ec76ffe-46f6-4193-b035-27952fdd0892"
      unitRef="usd">-110661000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjMtNi0xLTEtMzYxOTg_dbcfe9bc-be48-4dde-87ab-0fe0e9ef95a9"
      unitRef="usd">-60801000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:ProceedsFromStockOptionsExercised
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjUtMi0xLTEtMzYxOTg_9c9e5e14-9609-47f9-b5fb-d76b1b98d107"
      unitRef="usd">27456000</us-gaap:ProceedsFromStockOptionsExercised>
    <us-gaap:ProceedsFromStockOptionsExercised
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjUtNC0xLTEtMzYxOTg_8697ea18-b4e6-4db9-b42a-e6e15d526150"
      unitRef="usd">25624000</us-gaap:ProceedsFromStockOptionsExercised>
    <us-gaap:ProceedsFromStockOptionsExercised
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjUtNi0xLTEtMzYxOTg_4356cc04-28df-44b5-a382-3e43fe7d804d"
      unitRef="usd">18127000</us-gaap:ProceedsFromStockOptionsExercised>
    <calx:PaymentsForFinancingArrangements
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjYtMi0xLTEtMzYxOTg_986c6cdb-b8da-4e8e-9919-6440c36fe75c"
      unitRef="usd">2393000</calx:PaymentsForFinancingArrangements>
    <calx:PaymentsForFinancingArrangements
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjYtNC0xLTEtMzYxOTg_707c30a3-9274-4775-be3f-ceb78faa2a0e"
      unitRef="usd">1241000</calx:PaymentsForFinancingArrangements>
    <calx:PaymentsForFinancingArrangements
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjYtNi0xLTEtMzYxOTg_d9b52108-8036-4ec4-a01c-2e77276ed8f6"
      unitRef="usd">5758000</calx:PaymentsForFinancingArrangements>
    <us-gaap:ProceedsFromIssuanceOfCommonStock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjctMi0xLTEtMzYxOTg_d11f7215-9c63-4abf-868d-ab637be3fc4e"
      unitRef="usd">0</us-gaap:ProceedsFromIssuanceOfCommonStock>
    <us-gaap:ProceedsFromIssuanceOfCommonStock
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjctNC0xLTEtMzYxOTg_3e69de40-9244-4b7a-8fc5-5111cf86fc7e"
      unitRef="usd">0</us-gaap:ProceedsFromIssuanceOfCommonStock>
    <us-gaap:ProceedsFromIssuanceOfCommonStock
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjctNi0xLTEtMzYxOTg_807776fe-d879-490d-a32d-a2611ea483f5"
      unitRef="usd">60063000</us-gaap:ProceedsFromIssuanceOfCommonStock>
    <us-gaap:ProceedsFromLinesOfCredit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjgtMi0xLTEtMzYxOTg_15e8e3f7-e8d3-441c-bf0e-e109af16b386"
      unitRef="usd">0</us-gaap:ProceedsFromLinesOfCredit>
    <us-gaap:ProceedsFromLinesOfCredit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjgtNC0xLTEtMzYxOTg_449a09cb-611a-4839-ab4e-747dbe34370b"
      unitRef="usd">0</us-gaap:ProceedsFromLinesOfCredit>
    <us-gaap:ProceedsFromLinesOfCredit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjgtNi0xLTEtMzYxOTg_8ee21806-e04b-4eab-b71c-2d6193507382"
      unitRef="usd">30000000</us-gaap:ProceedsFromLinesOfCredit>
    <us-gaap:RepaymentsOfLinesOfCredit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjktMi0xLTEtMzYxOTg_82bb49b5-336e-45a7-b3fb-986132df7fa0"
      unitRef="usd">0</us-gaap:RepaymentsOfLinesOfCredit>
    <us-gaap:RepaymentsOfLinesOfCredit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjktNC0xLTEtMzYxOTg_66c83405-84d2-4bad-94f9-231c6b9b28d2"
      unitRef="usd">0</us-gaap:RepaymentsOfLinesOfCredit>
    <us-gaap:RepaymentsOfLinesOfCredit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjktNi0xLTEtMzYxOTg_6dd48874-4e3e-4ee0-92b3-1569ae93d38d"
      unitRef="usd">60285000</us-gaap:RepaymentsOfLinesOfCredit>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzAtMi0xLTEtMzYxOTg_ececc9c4-2734-4b56-b417-54ae9828c75d"
      unitRef="usd">25063000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzAtNC0xLTEtMzYxOTg_d74ae577-b3b5-4c46-865e-9e10a8ccb7b2"
      unitRef="usd">24383000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzAtNi0xLTEtMzYxOTg_4f852aea-0478-4da8-bfff-c20434eb9159"
      unitRef="usd">42147000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzEtMi0xLTEtMzYxOTg_9e4d48c8-1452-4708-9784-deafd3440184"
      unitRef="usd">-424000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzEtNC0xLTEtMzYxOTg_6ee1f480-43d5-4416-b8b6-10d3b0357599"
      unitRef="usd">11000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzEtNi0xLTEtMzYxOTg_b1ea4636-3687-49d0-9549-6493981cc7fa"
      unitRef="usd">595000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzItMi0xLTEtMzYxOTg_91298359-b980-4059-9389-ae6bc489db9e"
      unitRef="usd">27740000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzItNC0xLTEtMzYxOTg_2cbf96da-a111-4172-9f03-b16a94e1d5a3"
      unitRef="usd">-29474000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzItNi0xLTEtMzYxOTg_34085856-a05a-49da-a3d4-ebf6ec00bb7b"
      unitRef="usd">33350000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzMtMi0xLTEtMzYxOTg_7076c963-a413-4d55-88a7-63e3621c79d6"
      unitRef="usd">51333000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i5647c99c6e924e9681658be971eaeb0b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzMtNC0xLTEtMzYxOTg_e7b015de-0ea6-4f8b-801a-19007f8d8900"
      unitRef="usd">80807000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="ibe3ffb6b029948b89bd038665fa57d44_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzMtNi0xLTEtMzYxOTg_22900dcd-b449-4103-b7fe-74f16f12bc9b"
      unitRef="usd">47457000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzQtMi0xLTEtMzYxOTg_209cb8bb-262d-4ae0-ae37-379e517f6dc4"
      unitRef="usd">79073000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzQtNC0xLTEtMzYxOTg_13182c9f-38a6-4734-8916-e91c4448709c"
      unitRef="usd">51333000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i5647c99c6e924e9681658be971eaeb0b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzQtNi0xLTEtMzYxOTg_d1050468-e682-47b9-b68c-1e464ea6a187"
      unitRef="usd">80807000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:InterestPaidNet
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzYtMi0xLTEtMzYxOTg_ff3b118d-c2bb-42b6-8a1e-37307d790f66"
      unitRef="usd">577000</us-gaap:InterestPaidNet>
    <us-gaap:InterestPaidNet
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzYtNC0xLTEtMzYxOTg_6a399296-ecf0-42c6-b835-38f3af617671"
      unitRef="usd">631000</us-gaap:InterestPaidNet>
    <us-gaap:InterestPaidNet
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzYtNi0xLTEtMzYxOTg_93a9c5c7-40a3-4891-b201-a4b722d81d19"
      unitRef="usd">1686000</us-gaap:InterestPaidNet>
    <us-gaap:IncomeTaxesPaidNet
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzctMi0xLTEtMzYxOTg_c5d68f42-2a90-4262-b08c-94341b1fb3df"
      unitRef="usd">9607000</us-gaap:IncomeTaxesPaidNet>
    <us-gaap:IncomeTaxesPaidNet
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzctNC0xLTEtMzYxOTg_ef943509-0deb-418c-9df2-68cdb1945d4a"
      unitRef="usd">5197000</us-gaap:IncomeTaxesPaidNet>
    <us-gaap:IncomeTaxesPaidNet
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzctNi0xLTEtMzYxOTg_19e4b0e1-e110-43b8-af97-974cf2a95adf"
      unitRef="usd">751000</us-gaap:IncomeTaxesPaidNet>
    <calx:ChangeInCapitalExpendituresIncurredButNotYetPaid
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzktMi0xLTEtMzYxOTg_96138e07-9469-41e2-bf32-cc3cdac3dc47"
      unitRef="usd">586000</calx:ChangeInCapitalExpendituresIncurredButNotYetPaid>
    <calx:ChangeInCapitalExpendituresIncurredButNotYetPaid
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzktNC0xLTEtMzYxOTg_4e369818-8133-4992-9f17-9b524416190e"
      unitRef="usd">194000</calx:ChangeInCapitalExpendituresIncurredButNotYetPaid>
    <calx:ChangeInCapitalExpendituresIncurredButNotYetPaid
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzktNi0xLTEtMzYxOTg_6311b8c9-c989-438b-80bc-ba5bdbe6c179"
      unitRef="usd">-597000</calx:ChangeInCapitalExpendituresIncurredButNotYetPaid>
    <us-gaap:BusinessDescriptionAndAccountingPoliciesTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYwOTk_ced746a3-36a3-4f18-914d-d68371cd6ed8">Description of Business and Significant Accounting Policies&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Company&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Calix, Inc. (together with its subsidiaries, &#x201c;Calix&#x201d; or the &#x201c;Company&#x201d;) was incorporated in August 1999 and is a Delaware corporation. The Company is the leading global provider of a platform (cloud, software and systems) and managed services that focus on the subscriber-facing network, the portion of the network that governs available bandwidth and determines the range and quality of services that can be offered to subscribers. This platform and managed services enable broadband service providers (&#x201c;BSPs&#x201d;) of all sizes to innovate and transform their businesses. The Company&#x2019;s BSP customers are empowered to utilize real-time data and insights from the Calix platform to simplify their businesses and deliver experiences that excite their subscribers. These insights enable BSPs to grow their businesses through increased subscriber acquisition, loyalty and revenue, thereby increasing the value of their businesses and contributions to their communities.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Basis of Presentation and Accounting Guidance&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The accompanying consolidated financial statements have been prepared in accordance with the requirements of the U.S. Securities and Exchange Commission (&#x201c;SEC&#x201d;) and U.S. generally accepted accounting principles (&#x201c;GAAP&#x201d;). All significant intercompany balances and transactions have been eliminated in consolidation. Any reference in these notes to applicable accounting guidance is meant to refer to the authoritative U.S. GAAP as found in the Financial Accounting Standards Board (&#x201c;FASB&#x201d;) Accounting Standards Codification (&#x201c;ASC&#x201d;).&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Use of Estimates&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The preparation of financial statements is in conformity with U.S. GAAP, which requires management to make estimates and assumptions that affect the amounts reported in the consolidated financial statements and accompanying notes. For the Company, these estimates include, but are not limited to: allowances for doubtful accounts and sales returns, excess and obsolete inventory, allowances for obligations to its contract manufacturers, valuation of stock-based compensation, useful lives assigned to long-lived assets, standard and extended warranty costs, realizability of deferred tax assets and uncertain tax positions and contingencies. Actual results could differ from those estimates, and such differences could be material to the Company&#x2019;s financial position and results of operations.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Revenue Recognition&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Revenue is recognized when a performance obligation is satisfied, which occurs when control of the promised goods or services is transferred to the customer, in an amount that reflects the consideration the Company expects to be entitled to in exchange for those goods or services. Revenue from sales of access and premises systems is recognized when control is transferred to the customer, which is generally when the products are shipped. Revenue from software platform licenses, which provides the customer with a right to use the software as it exists, is generally recognized upfront when made available to the customer. Revenue from cloud-based software subscriptions, customer support, maintenance, extended warranty subscriptions and managed services is generally recognized ratably over the contract term. Revenue from professional services and training is recognized as the services are delivered.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A performance obligation is a promise in a contract to transfer a distinct good or service to the customer and is the unit of account. A contract&#x2019;s transaction price is allocated to each distinct performance obligation and recognized as revenue when, or as, the performance obligation is satisfied. The Company&#x2019;s hardware products contain both software and non-software components that function together to deliver the products&#x2019; essential functionality and therefore constitutes a single performance obligation as the promise to transfer the individual software and non-software components is not separately identifiable and, therefore, not distinct. Cloud-based software subscriptions can include multi-year agreements with a fixed annual fee for a minimum committed usage level. To the extent that minimum committed usage level each year varies, the Company has concluded that each year represents a distinct stand-ready performance obligation and the transaction price allocated to each performance obligation is recognized as revenue ratably over each annual period. The Company&#x2019;s contracts may include multiple performance obligations. For such arrangements, the Company allocates the contract&#x2019;s transaction price to each performance obligation using the relative stand-alone selling price of each distinct good or service in the contract. The Company generally determines stand-alone selling prices based on the prices charged to customers or its best estimate of stand-alone selling price. The Company&#x2019;s estimate of stand-alone selling price is established considering multiple factors including, but not limited to, geographies, market conditions, competitive landscape, internal costs, gross margin objectives, characteristics of targeted customers and pricing practices. The determination of estimated stand-alone selling price is made through consultation with and formal approval by management, taking into consideration the go-to-market strategy.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Cost of Revenue&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cost of revenue consists primarily of finished goods inventory purchased from the Company&#x2019;s contract manufacturers, payroll and related expenses associated with managing the relationships with contract manufacturers, depreciation of manufacturing test equipment, warranty and retrofit costs, excess and obsolete inventory costs, allowances for obligations to its contract manufacturers, shipping charges and amortization of certain intangible assets. It also includes contractor and other costs of services incurred directly related to the delivery of services to customers.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Warranty and Retrofit&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company offers limited warranties for its hardware products for a period of &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfNzk1NQ_52e60d60-98c1-49fa-aeb6-aa5951b471ac"&gt;one&lt;/span&gt;, &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfNzk1OQ_d86fb7cc-3137-407d-b8ce-6c28a7e598e4"&gt;three&lt;/span&gt; or five years, depending on the product type. The Company recognizes estimated costs related to warranty activities as a component of cost of revenue upon product shipment or upon identification of a specific product failure. Under certain circumstances, the Company also provides fixes on specifically identified performance failures for products that are outside of the standard warranty period and recognizes estimated costs related to retrofit activities as a component of cost of revenue upon identification of such product failures. The Company recognizes estimated warranty and retrofit costs when it is probable that a liability has been incurred and the amount of loss is reasonably estimable. The estimates are based upon historical and projected product failure and claim rates, historical costs incurred in correcting product failures and information available related to any specifically identified product failures. Judgment is required in estimating costs associated with warranty and retrofit activities, and the Company's estimates are limited to information available to the Company at the time of such estimates. In some cases, such as when a specific product failure is first identified or a new product is introduced, the Company may initially have limited information and limited historical failure and claim rates upon which to base its estimates, and such estimates may require revision in future periods. The recorded amount is adjusted from time to time for specifically identified warranty and retrofit exposure. Actual warranty and retrofit expenses are charged against the Company&#x2019;s estimated warranty and retrofit liability when incurred. Factors that affect the Company&#x2019;s warranty and retrofit liability include the number of active installed units and historical and anticipated rates of warranty and retrofit claims and cost per claim.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Stock-Based Compensation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Stock-based compensation expense associated with stock options and purchase rights under the Amended and Restated Employee Stock Purchase Plan (the &#x201c;ESPP&#x201d;) and the Amended and Restated 2017 Nonqualified Employee Stock Purchase Plan (the &#x201c;NQ ESPP&#x201d;) is measured at the grant date based on the fair value of the award and is recognized, net of forfeitures, as expense over the remaining requisite service period (generally the vesting period) on a straight-line basis.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The fair value of stock option and employee stock purchase right under the ESPP is estimated at the grant date using the Black-Scholes option valuation model. The fair value of the employee stock purchase right under the NQ ESPP is based on closing market price of the Company&#x2019;s common stock on the date of grant.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Stock-based compensation expense associated with performance stock options (&#x201c;PSOs&#x201d;) with graded vesting features and which contain both a performance and a service condition is measured based on fair value of stock options estimated at the grant date using the Black-Scholes option valuation model, and is recognized, net of forfeitures, as expense over the requisite service period using the graded vesting attribution method.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Compensation expense is only recognized if the Company has determined that it is probable that the performance condition will be met. The Company reassesses the probability of vesting at each reporting period and adjusts compensation expense based on its probability assessment.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Loss Contingencies&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;From time to time, the Company is involved in legal proceedings arising from the normal course of business activities. The Company evaluates the likelihood of an unfavorable outcome of legal proceedings to which it is a party and accrues a loss contingency when the loss is probable and reasonably estimable. Assessing legal contingencies involves significant judgment and estimates, and the outcome of litigation is inherently uncertain and subject to numerous factors outside the Company&#x2019;s control. Significant judgment is required when the Company assesses the likelihood of any adverse judgments or outcomes, including the potential range of possible losses, and whether losses are probable and reasonably estimable.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Because of uncertainties related to these matters, the Company bases its estimates of whether a loss contingency is probable or reasonably possible, as well as the reasonable range of possible losses associated with each loss contingency, only on the information available at the time. As additional information becomes available, and at least quarterly, the Company reassesses the potential liability on each significant matter and may revise its estimates. These revisions could have a material impact on the Company&#x2019;s business, operating results or financial condition. The actual outcome of these legal proceedings may materially differ from the Company&#x2019;s estimates of potential liability, which could have a material adverse effect on the Company&#x2019;s business, operating results or financial condition.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Credit Risk and Inventory Supplier Concentrations&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Financial instruments that potentially subject the Company to significant concentrations of credit risk consist primarily of cash, cash equivalents, marketable securities and accounts receivable. Cash equivalents consist of money market funds and marketable securities with a maturity at the date of purchase of ninety days or less, which are invested through financial institutions in the United States. Deposits in and investments held by these financial institutions may, at times, exceed federally insured limits. The Company has not experienced any losses in such accounts. The Company also has approximately $2.7 million of cash held by its foreign subsidiaries in India, China and the United Kingdom. Management believes that the financial institutions that hold the Company&#x2019;s cash and cash equivalents are financially sound and, accordingly, minimal credit risk exists with respect to these cash and cash equivalents.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company depends primarily on a small number of outside contract manufacturers (&#x201c;CMs&#x201d;) and original design manufacturers (&#x201c;ODMs&#x201d;) for the bulk of its finished goods inventory. The Company generally purchases its products through purchase orders with its suppliers. While the Company seeks to maintain a sufficient supply of its products, the Company&#x2019;s business and results of operations could be adversely affected by a stoppage or delay in receiving such products, the receipt of defective parts, an increase in price of such products or the Company&#x2019;s inability to obtain lower prices from its CMs, ODMs and other suppliers in response to competitive pressures.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Fair Value of Financial Instruments&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The carrying amounts of cash and cash equivalents, trade receivables, accounts payable and other accrued liabilities approximate their fair value due to their relatively short-term nature. Marketable securities are valued using quoted market prices in active markets to determine fair value.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Cash, Cash Equivalents and Marketable Securities&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cash equivalents and marketable securities are stated at amounts that approximate fair value based on quoted market prices.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company has invested its excess cash primarily in money market funds and highly liquid marketable securities such as U.S. treasury securities, corporate debt instruments, commercial paper and U.S. government securities. The Company considers all investments with maturities of three months or less when purchased to be cash equivalents. Marketable securities represent highly liquid U.S. treasury securities, corporate debt instruments, commercial paper and U.S. government securities with maturities greater than 90 days at date of purchase. Marketable securities with maturities greater than one year are classified as current because management considers all marketable securities to be available for current operations.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s investments have been classified and accounted for as available-for-sale. Such investments are recorded at fair value and unrealized holding gains and losses are reported as a separate component of comprehensive loss in the stockholders&#x2019; equity until realized. Realized gains and losses on sales of marketable securities, if any, are determined on the specific identification method and are reclassified from accumulated other comprehensive loss to results of operations as &#x201c;Other income (expense), net.&#x201d; Realized gains and losses were not significant for the years ended December&#160;31, 2022 and 2021, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;For the Company&#x2019;s available-for-sale debt securities in an unrealized loss position, the Company determines whether a credit loss exists. In this assessment, among other factors, the Company considers the extent to which the fair value is less than the amortized cost, any changes to the rating of the security by a rating agency, and adverse conditions specifically related to the security. If factors indicate a credit loss exists, an allowance for credit loss will be recorded to &#x201c;Other income (expense), net,&#x201d; limited by the amount that the fair value is less than the amortized cost basis. The amount of fair value change relating to all other factors will be recognized in other comprehensive loss.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;See Note 2 &#x201c;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Cash, Cash Equivalents and Marketable Securities.&#x201d;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Allowance for Doubtful Accounts&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company maintains an allowance for doubtful accounts for expected credit losses at contract inception resulting from the inability of its customers to make required payments. The Company records a specific allowance and revises the expected loss based on an analysis of individual past-due balances. Additionally, based on historical write-offs and the Company&#x2019;s collection experience, the Company records an additional allowance based on a percentage of outstanding receivables. The Company performs credit evaluations of its customers&#x2019; financial condition. These evaluations require judgment and are based on a variety of factors including, but not limited to, current economic trends, payment history and a financial review of the customer. Actual collection losses may differ from management&#x2019;s estimates, and such differences could be material to the Company's financial position and results of operations.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Inventory Valuation and Supplier Purchase Commitments&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Inventory, which primarily consists of finished goods purchased from CMs or ODMs, is stated at the lower of cost (determined by the first-in, first-out method) or market value. Inbound shipping costs and U.S. tariffs are included in cost of inventory. In &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;addition, from time to time, the Company procures component inventory primarily as a result of manufacturing discontinuation of critical components by suppliers. The Company regularly monitors inventory quantities on hand and records write-downs for excess and obsolete inventories based on the Company&#x2019;s estimate of demand for its products, potential obsolescence of technology, product life cycles and whether pricing trends or forecasts indicate that the carrying value of inventory exceeds its estimated selling price. The Company also evaluates its supplier purchase commitments, which have increased significantly due to extended lead-times in the current supply chain environment, and records a liability for excess and obsolete components based on its estimated demand of our products, potential obsolescence of technology and product life cycles.&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt; &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;These factors are impacted by market and economic conditions, technology changes and new product introductions and require significant estimates that may include elements that are uncertain. Actual demand may differ from forecasted demand and may have a material effect on gross profit. If inventory is written down, a new cost basis is established that cannot be increased in future periods. Shipments from suppliers before the Company receives them are recorded as in-transit inventory when title and the significant risks and rewards of ownership have passed to the Company.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Contract Costs&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company capitalizes certain sales commissions related primarily to multi-year cloud-based software subscriptions and extended warranty support contracts.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Capitalized commissions are amortized as sales and marketing expenses over the period that the related revenue is recognized, which can be up to five years for extended warranty. The Company classifies the unamortized portion of deferred commissions as current or noncurrent based on the timing of when the Company expects to recognize the expense. The current and noncurrent portions of deferred commissions are included in &#x201c;Prepaid expenses and other current assets&#x201d; and &#x201c;Other assets,&#x201d; respectively, in the Company&#x2019;s Consolidated Balance Sheets.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Property and Equipment&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property and equipment are stated at cost, less accumulated depreciation, and are depreciated using the straight-line method over the estimated useful life of each asset. Generally, computer equipment is depreciated over two years; purchased software is depreciated over &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjA4MDI_2e01504e-91d5-45fd-890f-25b987875d7a"&gt;three&lt;/span&gt; to five years; test equipment is depreciated over three years; furniture and fixtures are depreciated over seven years; and leasehold improvements are depreciated over the shorter of the respective lease term or the estimated useful life of the asset. Maintenance and repairs are charged to expense as incurred.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Goodwill&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Goodwill was recorded as a result of the Company&#x2019;s acquisitions of Occam Networks, Inc. in February 2011 and Optical Solutions, Inc. in February 2006. The Company records goodwill when consideration paid in a business acquisition exceeds the fair value of the net tangible assets and the identified intangible assets acquired. Goodwill is not amortized but instead is subject to an annual impairment test or more frequently if events or changes in circumstances indicate that it may be impaired. The Company evaluates goodwill on an annual basis as of the end of the second quarter of each fiscal year. Management has determined that it operates as a single reporting unit and, therefore, evaluates goodwill impairment at the enterprise level.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;At the end of the second quarter of 2022, the Company completed its annual goodwill impairment test. Based on its assessment of certain qualitative factors such as market capitalization, management concluded that the fair value of the Company was more likely than not greater than its carrying amount as of July 2, 2022. As such, it was not necessary to perform the two-step quantitative goodwill impairment test at the time.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;There have been no significant events or changes in circumstances subsequent to the 2022 annual impairment test that would more likely than not indicate that the carrying value of goodwill may have been impaired as of December&#160;31, 2022. There were no impairment losses for goodwill for the years ended December&#160;31, 2022, 2021 or 2020.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Deferred Revenue&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Deferred revenue results from transactions where the Company billed the customer for products or services and when cash payments are received or due prior to transferring control of the promised goods or services to the customer. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Payment terms to customers typically range from net&#160;30&#160;to net&#160;90&#160;days and vary by the size and location of customer and the products or services offered. The period between the transfer of control of the promised good or service to a customer and when payment is due is not significant.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Income Taxes&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company evaluates its tax positions and estimates its current tax exposure along with assessing temporary differences that result from different book to tax treatment of items not currently deductible for tax purposes. These differences result in deferred tax assets and liabilities on the Company&#x2019;s Consolidated Balance Sheets, which are estimated based upon the &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;difference between the financial statement and tax bases of assets and liabilities using the enacted tax rates that will be in effect when these differences reverse. In general, deferred tax assets represent future tax benefits to be received when certain expenses previously recognized in the Company&#x2019;s Consolidated Statements of Comprehensive Income become deductible expenses under applicable income tax laws or loss or credit carryforwards are utilized. Accordingly, realization of the Company&#x2019;s deferred tax assets is dependent on future taxable income against which these deductions, losses and credits can be utilized.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company must assess the likelihood that deferred tax assets will be recovered from future taxable income, and if the Company determines that recovery is not more likely than not, the Company must establish a valuation allowance. Management judgment is required in determining its provision for income taxes, deferred tax assets and liabilities and any valuation allowance recorded against its net deferred tax assets. In the third quarter of 2021, the Company reversed the majority of its valuation allowance and recorded on its balance sheet U.S. federal and certain state deferred tax assets of $162.0&#160;million. As of December 31, 2022, the Company determined that positive evidence continues to outweigh negative evidence and concluded that it was more likely than not that its U.S. federal and state (with the exception of California) deferred tax assets are realizable. The Company currently maintains a valuation allowance of $29.9 million for certain U.S. federal and California deferred tax assets.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Newly Adopted Accounting Standards&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company did not adopt any new accounting standards in 2022 that were significant to the Company.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Recent Accounting Pronouncements Not Yet Adopted&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;There have been no accounting pronouncements or changes in accounting pronouncements that are significant or potentially significant to the Company.&lt;/span&gt;&lt;/div&gt;</us-gaap:BusinessDescriptionAndAccountingPoliciesTextBlock>
    <us-gaap:BasisOfAccountingPolicyPolicyTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxODQ_65aa2116-a6d8-4ea6-87ef-995c0c7a94be">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Basis of Presentation and Accounting Guidance&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The accompanying consolidated financial statements have been prepared in accordance with the requirements of the U.S. Securities and Exchange Commission (&#x201c;SEC&#x201d;) and U.S. generally accepted accounting principles (&#x201c;GAAP&#x201d;). All significant intercompany balances and transactions have been eliminated in consolidation. Any reference in these notes to applicable accounting guidance is meant to refer to the authoritative U.S. GAAP as found in the Financial Accounting Standards Board (&#x201c;FASB&#x201d;) Accounting Standards Codification (&#x201c;ASC&#x201d;).&lt;/span&gt;&lt;/div&gt;</us-gaap:BasisOfAccountingPolicyPolicyTextBlock>
    <us-gaap:UseOfEstimates
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMTM_f55d930a-718a-43e5-97ee-846f188411cb">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Use of Estimates&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The preparation of financial statements is in conformity with U.S. GAAP, which requires management to make estimates and assumptions that affect the amounts reported in the consolidated financial statements and accompanying notes. For the Company, these estimates include, but are not limited to: allowances for doubtful accounts and sales returns, excess and obsolete inventory, allowances for obligations to its contract manufacturers, valuation of stock-based compensation, useful lives assigned to long-lived assets, standard and extended warranty costs, realizability of deferred tax assets and uncertain tax positions and contingencies. Actual results could differ from those estimates, and such differences could be material to the Company&#x2019;s financial position and results of operations.&lt;/span&gt;&lt;/div&gt;</us-gaap:UseOfEstimates>
    <us-gaap:RevenueFromContractWithCustomerPolicyTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYyMDA_244a0ca6-2336-4e3b-843e-9bcf4f232872">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Revenue Recognition&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Revenue is recognized when a performance obligation is satisfied, which occurs when control of the promised goods or services is transferred to the customer, in an amount that reflects the consideration the Company expects to be entitled to in exchange for those goods or services. Revenue from sales of access and premises systems is recognized when control is transferred to the customer, which is generally when the products are shipped. Revenue from software platform licenses, which provides the customer with a right to use the software as it exists, is generally recognized upfront when made available to the customer. Revenue from cloud-based software subscriptions, customer support, maintenance, extended warranty subscriptions and managed services is generally recognized ratably over the contract term. Revenue from professional services and training is recognized as the services are delivered.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A performance obligation is a promise in a contract to transfer a distinct good or service to the customer and is the unit of account. A contract&#x2019;s transaction price is allocated to each distinct performance obligation and recognized as revenue when, or as, the performance obligation is satisfied. The Company&#x2019;s hardware products contain both software and non-software components that function together to deliver the products&#x2019; essential functionality and therefore constitutes a single performance obligation as the promise to transfer the individual software and non-software components is not separately identifiable and, therefore, not distinct. Cloud-based software subscriptions can include multi-year agreements with a fixed annual fee for a minimum committed usage level. To the extent that minimum committed usage level each year varies, the Company has concluded that each year represents a distinct stand-ready performance obligation and the transaction price allocated to each performance obligation is recognized as revenue ratably over each annual period. The Company&#x2019;s contracts may include multiple performance obligations. For such arrangements, the Company allocates the contract&#x2019;s transaction price to each performance obligation using the relative stand-alone selling price of each distinct good or service in the contract. The Company generally determines stand-alone selling prices based on the prices charged to customers or its best estimate of stand-alone selling price. The Company&#x2019;s estimate of stand-alone selling price is established considering multiple factors including, but not limited to, geographies, market conditions, competitive landscape, internal costs, gross margin objectives, characteristics of targeted customers and pricing practices. The determination of estimated stand-alone selling price is made through consultation with and formal approval by management, taking into consideration the go-to-market strategy.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Contract Costs&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company capitalizes certain sales commissions related primarily to multi-year cloud-based software subscriptions and extended warranty support contracts.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Capitalized commissions are amortized as sales and marketing expenses over the period that the related revenue is recognized, which can be up to five years for extended warranty. The Company classifies the unamortized portion of deferred commissions as current or noncurrent based on the timing of when the Company expects to recognize the expense. The current and noncurrent portions of deferred commissions are included in &#x201c;Prepaid expenses and other current assets&#x201d; and &#x201c;Other assets,&#x201d; respectively, in the Company&#x2019;s Consolidated Balance Sheets.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Deferred Revenue&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Deferred revenue results from transactions where the Company billed the customer for products or services and when cash payments are received or due prior to transferring control of the promised goods or services to the customer. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Payment terms to customers typically range from net&#160;30&#160;to net&#160;90&#160;days and vary by the size and location of customer and the products or services offered. The period between the transfer of control of the promised good or service to a customer and when payment is due is not significant.&lt;/span&gt;&lt;/div&gt;</us-gaap:RevenueFromContractWithCustomerPolicyTextBlock>
    <us-gaap:CostOfSalesPolicyTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxNDc_a76970ba-3dc1-4fd7-9b43-5fe4ea037de5">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Cost of Revenue&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cost of revenue consists primarily of finished goods inventory purchased from the Company&#x2019;s contract manufacturers, payroll and related expenses associated with managing the relationships with contract manufacturers, depreciation of manufacturing test equipment, warranty and retrofit costs, excess and obsolete inventory costs, allowances for obligations to its contract manufacturers, shipping charges and amortization of certain intangible assets. It also includes contractor and other costs of services incurred directly related to the delivery of services to customers.&lt;/span&gt;&lt;/div&gt;</us-gaap:CostOfSalesPolicyTextBlock>
    <us-gaap:StandardProductWarrantyPolicy
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxODg_2e6ab482-f0a2-453f-9cab-fbc05983fe04">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Warranty and Retrofit&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company offers limited warranties for its hardware products for a period of &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfNzk1NQ_52e60d60-98c1-49fa-aeb6-aa5951b471ac"&gt;one&lt;/span&gt;, &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfNzk1OQ_d86fb7cc-3137-407d-b8ce-6c28a7e598e4"&gt;three&lt;/span&gt; or five years, depending on the product type. The Company recognizes estimated costs related to warranty activities as a component of cost of revenue upon product shipment or upon identification of a specific product failure. Under certain circumstances, the Company also provides fixes on specifically identified performance failures for products that are outside of the standard warranty period and recognizes estimated costs related to retrofit activities as a component of cost of revenue upon identification of such product failures. The Company recognizes estimated warranty and retrofit costs when it is probable that a liability has been incurred and the amount of loss is reasonably estimable. The estimates are based upon historical and projected product failure and claim rates, historical costs incurred in correcting product failures and information available related to any specifically identified product failures. Judgment is required in estimating costs associated with warranty and retrofit activities, and the Company's estimates are limited to information available to the Company at the time of such estimates. In some cases, such as when a specific product failure is first identified or a new product is introduced, the Company may initially have limited information and limited historical failure and claim rates upon which to base its estimates, and such estimates may require revision in future periods. The recorded amount is adjusted from time to time for specifically identified warranty and retrofit exposure. Actual warranty and retrofit expenses are charged against the Company&#x2019;s estimated warranty and retrofit liability when incurred. Factors that affect the Company&#x2019;s warranty and retrofit liability include the number of active installed units and historical and anticipated rates of warranty and retrofit claims and cost per claim.&lt;/span&gt;&lt;/div&gt;</us-gaap:StandardProductWarrantyPolicy>
    <calx:ProductWarrantyPeriod
      contextRef="ib4e76b7a0138479ebec9c577d687f1b3_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfNzk2NQ_2c9b6e62-e772-4f2a-b08d-0ea4358361b3">P5Y</calx:ProductWarrantyPeriod>
    <us-gaap:ShareBasedCompensationOptionAndIncentivePlansPolicy
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxNTg_949cb16d-3245-405a-9521-34140605a72e">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Stock-Based Compensation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Stock-based compensation expense associated with stock options and purchase rights under the Amended and Restated Employee Stock Purchase Plan (the &#x201c;ESPP&#x201d;) and the Amended and Restated 2017 Nonqualified Employee Stock Purchase Plan (the &#x201c;NQ ESPP&#x201d;) is measured at the grant date based on the fair value of the award and is recognized, net of forfeitures, as expense over the remaining requisite service period (generally the vesting period) on a straight-line basis.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The fair value of stock option and employee stock purchase right under the ESPP is estimated at the grant date using the Black-Scholes option valuation model. The fair value of the employee stock purchase right under the NQ ESPP is based on closing market price of the Company&#x2019;s common stock on the date of grant.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Stock-based compensation expense associated with performance stock options (&#x201c;PSOs&#x201d;) with graded vesting features and which contain both a performance and a service condition is measured based on fair value of stock options estimated at the grant date using the Black-Scholes option valuation model, and is recognized, net of forfeitures, as expense over the requisite service period using the graded vesting attribution method.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Compensation expense is only recognized if the Company has determined that it is probable that the performance condition will be met. The Company reassesses the probability of vesting at each reporting period and adjusts compensation expense based on its probability assessment.&lt;/span&gt;&lt;/div&gt;</us-gaap:ShareBasedCompensationOptionAndIncentivePlansPolicy>
    <us-gaap:CommitmentsAndContingenciesPolicyTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMzc_5e9a4e76-6b6a-413c-b169-95231d2c477f">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Loss Contingencies&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;From time to time, the Company is involved in legal proceedings arising from the normal course of business activities. The Company evaluates the likelihood of an unfavorable outcome of legal proceedings to which it is a party and accrues a loss contingency when the loss is probable and reasonably estimable. Assessing legal contingencies involves significant judgment and estimates, and the outcome of litigation is inherently uncertain and subject to numerous factors outside the Company&#x2019;s control. Significant judgment is required when the Company assesses the likelihood of any adverse judgments or outcomes, including the potential range of possible losses, and whether losses are probable and reasonably estimable.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Because of uncertainties related to these matters, the Company bases its estimates of whether a loss contingency is probable or reasonably possible, as well as the reasonable range of possible losses associated with each loss contingency, only on the information available at the time. As additional information becomes available, and at least quarterly, the Company reassesses the potential liability on each significant matter and may revise its estimates. These revisions could have a material impact on the Company&#x2019;s business, operating results or financial condition. The actual outcome of these legal proceedings may materially differ from the Company&#x2019;s estimates of potential liability, which could have a material adverse effect on the Company&#x2019;s business, operating results or financial condition.&lt;/span&gt;&lt;/div&gt;</us-gaap:CommitmentsAndContingenciesPolicyTextBlock>
    <us-gaap:ConcentrationRiskCreditRisk
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxNjA_eef3e0d1-a7b5-4a50-9ec1-828351de2f06">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Credit Risk and Inventory Supplier Concentrations&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Financial instruments that potentially subject the Company to significant concentrations of credit risk consist primarily of cash, cash equivalents, marketable securities and accounts receivable. Cash equivalents consist of money market funds and marketable securities with a maturity at the date of purchase of ninety days or less, which are invested through financial institutions in the United States. Deposits in and investments held by these financial institutions may, at times, exceed federally insured limits. The Company has not experienced any losses in such accounts. The Company also has approximately $2.7 million of cash held by its foreign subsidiaries in India, China and the United Kingdom. Management believes that the financial institutions that hold the Company&#x2019;s cash and cash equivalents are financially sound and, accordingly, minimal credit risk exists with respect to these cash and cash equivalents.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company depends primarily on a small number of outside contract manufacturers (&#x201c;CMs&#x201d;) and original design manufacturers (&#x201c;ODMs&#x201d;) for the bulk of its finished goods inventory. The Company generally purchases its products through purchase orders with its suppliers. While the Company seeks to maintain a sufficient supply of its products, the Company&#x2019;s business and results of operations could be adversely affected by a stoppage or delay in receiving such products, the receipt of defective parts, an increase in price of such products or the Company&#x2019;s inability to obtain lower prices from its CMs, ODMs and other suppliers in response to competitive pressures.&lt;/span&gt;&lt;/div&gt;</us-gaap:ConcentrationRiskCreditRisk>
    <us-gaap:Cash
      contextRef="i11ca9800e83c4a9fac73cab090bae62c_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMTM1OTY_4a368c16-f801-4442-b832-bba031093e30"
      unitRef="usd">2700000</us-gaap:Cash>
    <us-gaap:FairValueOfFinancialInstrumentsPolicy
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMDU_c28363bf-e92e-4d13-8284-946ea8a3961d">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Fair Value of Financial Instruments&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The carrying amounts of cash and cash equivalents, trade receivables, accounts payable and other accrued liabilities approximate their fair value due to their relatively short-term nature. Marketable securities are valued using quoted market prices in active markets to determine fair value.&lt;/span&gt;&lt;/div&gt;</us-gaap:FairValueOfFinancialInstrumentsPolicy>
    <calx:CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxNzY_16787183-a7e2-4b5a-b60a-fbc677958861">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Cash, Cash Equivalents and Marketable Securities&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cash equivalents and marketable securities are stated at amounts that approximate fair value based on quoted market prices.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company has invested its excess cash primarily in money market funds and highly liquid marketable securities such as U.S. treasury securities, corporate debt instruments, commercial paper and U.S. government securities. The Company considers all investments with maturities of three months or less when purchased to be cash equivalents. Marketable securities represent highly liquid U.S. treasury securities, corporate debt instruments, commercial paper and U.S. government securities with maturities greater than 90 days at date of purchase. Marketable securities with maturities greater than one year are classified as current because management considers all marketable securities to be available for current operations.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s investments have been classified and accounted for as available-for-sale. Such investments are recorded at fair value and unrealized holding gains and losses are reported as a separate component of comprehensive loss in the stockholders&#x2019; equity until realized. Realized gains and losses on sales of marketable securities, if any, are determined on the specific identification method and are reclassified from accumulated other comprehensive loss to results of operations as &#x201c;Other income (expense), net.&#x201d; Realized gains and losses were not significant for the years ended December&#160;31, 2022 and 2021, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;For the Company&#x2019;s available-for-sale debt securities in an unrealized loss position, the Company determines whether a credit loss exists. In this assessment, among other factors, the Company considers the extent to which the fair value is less than the amortized cost, any changes to the rating of the security by a rating agency, and adverse conditions specifically related to the security. If factors indicate a credit loss exists, an allowance for credit loss will be recorded to &#x201c;Other income (expense), net,&#x201d; limited by the amount that the fair value is less than the amortized cost basis. The amount of fair value change relating to all other factors will be recognized in other comprehensive loss.&lt;/span&gt;&lt;/div&gt;</calx:CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock>
    <us-gaap:ReceivablesTradeAndOtherAccountsReceivableAllowanceForDoubtfulAccountsPolicy
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMjY_f7ab37ed-d766-4c07-b871-d92c8887e1e9">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Allowance for Doubtful Accounts&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company maintains an allowance for doubtful accounts for expected credit losses at contract inception resulting from the inability of its customers to make required payments. The Company records a specific allowance and revises the expected loss based on an analysis of individual past-due balances. Additionally, based on historical write-offs and the Company&#x2019;s collection experience, the Company records an additional allowance based on a percentage of outstanding receivables. The Company performs credit evaluations of its customers&#x2019; financial condition. These evaluations require judgment and are based on a variety of factors including, but not limited to, current economic trends, payment history and a financial review of the customer. Actual collection losses may differ from management&#x2019;s estimates, and such differences could be material to the Company's financial position and results of operations.&lt;/span&gt;&lt;/div&gt;</us-gaap:ReceivablesTradeAndOtherAccountsReceivableAllowanceForDoubtfulAccountsPolicy>
    <us-gaap:InventoryPolicyTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMjc_34a6c53a-16f6-4c11-bde9-febc96c5d855">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Inventory Valuation and Supplier Purchase Commitments&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Inventory, which primarily consists of finished goods purchased from CMs or ODMs, is stated at the lower of cost (determined by the first-in, first-out method) or market value. Inbound shipping costs and U.S. tariffs are included in cost of inventory. In &lt;/span&gt;&lt;/div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;addition, from time to time, the Company procures component inventory primarily as a result of manufacturing discontinuation of critical components by suppliers. The Company regularly monitors inventory quantities on hand and records write-downs for excess and obsolete inventories based on the Company&#x2019;s estimate of demand for its products, potential obsolescence of technology, product life cycles and whether pricing trends or forecasts indicate that the carrying value of inventory exceeds its estimated selling price. The Company also evaluates its supplier purchase commitments, which have increased significantly due to extended lead-times in the current supply chain environment, and records a liability for excess and obsolete components based on its estimated demand of our products, potential obsolescence of technology and product life cycles.&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt; &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;These factors are impacted by market and economic conditions, technology changes and new product introductions and require significant estimates that may include elements that are uncertain. Actual demand may differ from forecasted demand and may have a material effect on gross profit. If inventory is written down, a new cost basis is established that cannot be increased in future periods. Shipments from suppliers before the Company receives them are recorded as in-transit inventory when title and the significant risks and rewards of ownership have passed to the Company.&lt;/span&gt;</us-gaap:InventoryPolicyTextBlock>
    <us-gaap:CapitalizedContractCostAmortizationPeriod
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjAxMTk_7539e90f-8525-40c2-aa70-2b2926f33c2c">P5Y</us-gaap:CapitalizedContractCostAmortizationPeriod>
    <us-gaap:PropertyPlantAndEquipmentPolicyTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYyMTA_c32774a8-7241-48bc-ba36-4d3159f82be5">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Property and Equipment&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property and equipment are stated at cost, less accumulated depreciation, and are depreciated using the straight-line method over the estimated useful life of each asset. Generally, computer equipment is depreciated over two years; purchased software is depreciated over &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjA4MDI_2e01504e-91d5-45fd-890f-25b987875d7a"&gt;three&lt;/span&gt; to five years; test equipment is depreciated over three years; furniture and fixtures are depreciated over seven years; and leasehold improvements are depreciated over the shorter of the respective lease term or the estimated useful life of the asset. Maintenance and repairs are charged to expense as incurred.&lt;/span&gt;&lt;/div&gt;</us-gaap:PropertyPlantAndEquipmentPolicyTextBlock>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i7ad4ad7c154840f4bae9ab60b925baa2_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjA3NTk_49b4f4b7-e707-4743-b62c-4ae2c11ccc4a">P2Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i83e79e5ca7b146d28600c379569850f6_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjA4MDg_f82d4378-ca87-4317-91e6-641a1cb279e0">P5Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="ic399c58a2c1a45bd84aaa9618f98d9e8_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjA4NDc_e707f8d0-470d-4ee8-a22b-7c8f9a529e79">P3Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i0bf6d605c909425e9b0bbeda75e84492_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjA4OTU_a09a2670-eebb-48fb-a281-89f79da1269b">P7Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMDg_adf27f2a-55a0-4fc2-bff7-d71a10d8ef6f">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Goodwill&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Goodwill was recorded as a result of the Company&#x2019;s acquisitions of Occam Networks, Inc. in February 2011 and Optical Solutions, Inc. in February 2006. The Company records goodwill when consideration paid in a business acquisition exceeds the fair value of the net tangible assets and the identified intangible assets acquired. Goodwill is not amortized but instead is subject to an annual impairment test or more frequently if events or changes in circumstances indicate that it may be impaired. The Company evaluates goodwill on an annual basis as of the end of the second quarter of each fiscal year. Management has determined that it operates as a single reporting unit and, therefore, evaluates goodwill impairment at the enterprise level.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;At the end of the second quarter of 2022, the Company completed its annual goodwill impairment test. Based on its assessment of certain qualitative factors such as market capitalization, management concluded that the fair value of the Company was more likely than not greater than its carrying amount as of July 2, 2022. As such, it was not necessary to perform the two-step quantitative goodwill impairment test at the time.&lt;/span&gt;&lt;/div&gt;</us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy>
    <us-gaap:GoodwillImpairmentLoss
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjI1MTE_d9706ccc-3a6b-471a-9188-f63e4a02c94f"
      unitRef="usd">0</us-gaap:GoodwillImpairmentLoss>
    <us-gaap:GoodwillImpairmentLoss
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjI1MTE_e820f773-dffa-418d-887c-fb5666891961"
      unitRef="usd">0</us-gaap:GoodwillImpairmentLoss>
    <us-gaap:GoodwillImpairmentLoss
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjI1MTE_fc62e23c-97f6-4613-aa5c-4c959f352a2e"
      unitRef="usd">0</us-gaap:GoodwillImpairmentLoss>
    <us-gaap:IncomeTaxPolicyTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMzU_8676dc4b-09b7-4409-9149-51e359d381ed">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Income Taxes&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company evaluates its tax positions and estimates its current tax exposure along with assessing temporary differences that result from different book to tax treatment of items not currently deductible for tax purposes. These differences result in deferred tax assets and liabilities on the Company&#x2019;s Consolidated Balance Sheets, which are estimated based upon the &lt;/span&gt;&lt;/div&gt;difference between the financial statement and tax bases of assets and liabilities using the enacted tax rates that will be in effect when these differences reverse. In general, deferred tax assets represent future tax benefits to be received when certain expenses previously recognized in the Company&#x2019;s Consolidated Statements of Comprehensive Income become deductible expenses under applicable income tax laws or loss or credit carryforwards are utilized. Accordingly, realization of the Company&#x2019;s deferred tax assets is dependent on future taxable income against which these deductions, losses and credits can be utilized.The Company must assess the likelihood that deferred tax assets will be recovered from future taxable income, and if the Company determines that recovery is not more likely than not, the Company must establish a valuation allowance. Management judgment is required in determining its provision for income taxes, deferred tax assets and liabilities and any valuation allowance recorded against its net deferred tax assets. In the third quarter of 2021, the Company reversed the majority of its valuation allowance and recorded on its balance sheet U.S. federal and certain state deferred tax assets of $162.0&#160;million. As of December 31, 2022, the Company determined that positive evidence continues to outweigh negative evidence and concluded that it was more likely than not that its U.S. federal and state (with the exception of California) deferred tax assets are realizable.</us-gaap:IncomeTaxPolicyTextBlock>
    <us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="if54b7cb1441945f288166b95742d4e04_D20210704-20211002"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMTA5OTUxMTY3Mzk2Ng_41502837-ce1e-4d3d-9c8f-147a8ca31b8f"
      unitRef="usd">162000000</us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjU2OTA_3c9c5eb9-f371-4924-9f36-b983e2ab9013"
      unitRef="usd">29900000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMTk_8884b72c-fa71-4d8c-9a1c-d09a4086993a">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Newly Adopted Accounting Standards&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company did not adopt any new accounting standards in 2022 that were significant to the Company.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Recent Accounting Pronouncements Not Yet Adopted&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;There have been no accounting pronouncements or changes in accounting pronouncements that are significant or potentially significant to the Company.&lt;/span&gt;&lt;/div&gt;</us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock>
    <us-gaap:CashCashEquivalentsAndMarketableSecuritiesTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RleHRyZWdpb246YzE4NTU1MTFhYTgzNGU0NWEyYzg1MzUxMzE3NGE3NWNfNDY3_59ad6bf5-d3db-4926-974f-bbb87138a8d6">Cash, Cash Equivalents and Marketable Securities&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cash, cash equivalents and marketable securities consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-indent:22.5pt"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-indent:22.5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:95.467%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.172%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.484%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.079%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.484%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Cash and cash equivalents:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Cash&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;39,189&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;26,442&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Commercial paper&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;33,199&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21,582&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,990&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Money market funds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,320&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Corporate debt securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;140&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;989&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total cash and cash equivalents&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;79,073&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;51,333&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Marketable securities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;106,750&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;60,279&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Commercial paper&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;28,992&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;80,812&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,632&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,527&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Corporate debt securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,168&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,576&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Municipal securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total marketable securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;162,642&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;153,002&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;241,715&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;204,335&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The carrying amounts of the Company&#x2019;s money market funds approximate their fair values due to their nature, duration and short maturities. As of December&#160;31, 2022, all marketable securities were due in two years or less.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The amortized cost and fair value of marketable securities as of December&#160;31, 2022 were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:7pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:45.245%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:2.139%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.835%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.554%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.835%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.554%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.838%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Amortized Cost&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Unrealized Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;114,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,379)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;112,740&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Commercial paper&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,262&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(71)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,191&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,876&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(244)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,632&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Corporate debt securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,312&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,308&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Municipal securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;101&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total marketable securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;203,670&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,699)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;201,971&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:7pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Unrealized gains and losses were not significant as of December&#160;31, 2021.&lt;/span&gt;&lt;/div&gt;</us-gaap:CashCashEquivalentsAndMarketableSecuritiesTextBlock>
    <us-gaap:ScheduleOfCashAndCashEquivalentsTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RleHRyZWdpb246YzE4NTU1MTFhYTgzNGU0NWEyYzg1MzUxMzE3NGE3NWNfNDc0_45815ac6-0cb8-4a75-95d0-24d95810c345">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cash, cash equivalents and marketable securities consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-indent:22.5pt"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-indent:22.5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:95.467%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.172%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.484%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.079%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.484%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Cash and cash equivalents:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Cash&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;39,189&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;26,442&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Commercial paper&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;33,199&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21,582&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,990&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Money market funds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,320&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Corporate debt securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;140&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;989&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total cash and cash equivalents&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;79,073&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;51,333&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Marketable securities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;106,750&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;60,279&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Commercial paper&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;28,992&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;80,812&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,632&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,527&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Corporate debt securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,168&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,576&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Municipal securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total marketable securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;162,642&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;153,002&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;241,715&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;204,335&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfCashAndCashEquivalentsTableTextBlock>
    <us-gaap:Cash
      contextRef="ic38a86a38cbb476798e3dd19d71ee36d_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMy0yLTEtMS0zNjE5OA_a30725dd-3576-4857-87be-4442f352b496"
      unitRef="usd">39189000</us-gaap:Cash>
    <us-gaap:Cash
      contextRef="ic6740d270bd44d0183c169758c4ea62d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMy00LTEtMS0zNjE5OA_bccae277-8f85-4e3a-9e26-9e198d1a9a7f"
      unitRef="usd">26442000</us-gaap:Cash>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="i0f4b83625a934f8ca3fe1b1ca19c4b55_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNC0yLTEtMS0zNjE5OA_773c5d62-cae7-4346-8057-d2120fdaaa23"
      unitRef="usd">33199000</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="i673cc06359884f75af7187294e97424c_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNC00LTEtMS0zNjE5OA_a9287ffc-362c-4f41-8649-4903a77ea25c"
      unitRef="usd">21582000</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="ied4eb127f8c34de9ab8ee8c6d45c70d5_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNS0yLTEtMS0zNjE5OA_86f8472f-ae67-4963-9fc8-a7de153f9214"
      unitRef="usd">5990000</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="i664d2390333c48adb557984dce1aa6e2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNS00LTEtMS0zNjE5OA_892bc834-12f5-4526-87fa-17a52628ff6b"
      unitRef="usd">0</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="i9c5831145c9248d6abebe6d6cef1287a_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNi0yLTEtMS0zNjE5OA_34d0342a-de68-4405-b12a-9ad13da500ad"
      unitRef="usd">555000</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="i09a1c858595a4a30a3c15e60909e366e_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNi00LTEtMS0zNjE5OA_f70449bb-40e6-427a-a433-7b3ed8602d81"
      unitRef="usd">2320000</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="i7e64a1001c8149bcaa2a5d6d9cb3384f_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNy0yLTEtMS0zNjE5OA_6bfc067b-040a-4225-8a4f-46022bd6e416"
      unitRef="usd">140000</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="i535c7a70b8a942c79affe1727d7ae52b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNy00LTEtMS0zNjE5OA_91421ed6-a11a-4a54-b240-56a55902c1ad"
      unitRef="usd">989000</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfOC0yLTEtMS0zNjE5OA_3ede234e-2da3-4431-81d0-0be1728faa10"
      unitRef="usd">79073000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfOC00LTEtMS0zNjE5OA_68303176-3a9a-424e-8250-08a2c9b1ec19"
      unitRef="usd">51333000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="iae1efd6e91be43c984f2ec4c782de70d_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTAtMi0xLTEtMzYxOTg_637230b3-3a6d-4ed7-8757-08194108b603"
      unitRef="usd">106750000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i3333828445aa4fb99c0ed582b56ad206_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTAtNC0xLTEtMzYxOTg_ccf55a9f-88df-4d08-a71a-4731f424bfd9"
      unitRef="usd">60279000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="ic16ba641b2084da4b404a37dcb45e256_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTEtMi0xLTEtMzYxOTg_291eabc7-ed07-470b-8ae3-1a364be7fc84"
      unitRef="usd">28992000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i5b99835257004211b4a068dd960dc899_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTEtNC0xLTEtMzYxOTg_c430d6ee-c4d2-4c00-bb7d-e33f5fed6328"
      unitRef="usd">80812000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i820b02ffde9349fb97eb0f64a6f6c7e9_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTItMi0xLTEtMzYxOTg_b20bd8f4-2bfc-4ad2-b6c3-a63517225438"
      unitRef="usd">23632000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i949c87eb081c4441b7e851734c228f84_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTItNC0xLTEtMzYxOTg_05cd3d62-03c7-4c8f-a011-21a34dccde33"
      unitRef="usd">5527000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i6d7b2ffce6be4b6fa0bb526a979535d0_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTMtMi0xLTEtMzYxOTg_5eda196f-f45f-4a18-b5c0-b9ed6d596944"
      unitRef="usd">3168000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i0a565c8b23bc4d09a1f297fb9bed6d2e_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTMtNC0xLTEtMzYxOTg_525d3ceb-126d-4283-acb3-93a7bbf37499"
      unitRef="usd">3576000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i744cd44f39884a5a9e7c494e807de46d_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTQtMi0xLTEtMzYxOTg_616c1a0c-5e2e-4029-a2ae-5ce71d43bb4a"
      unitRef="usd">100000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i4793b5e7b36744d0b452f2f9832d9099_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTQtNC0xLTEtMzYxOTg_fd0d4418-ee73-4578-9c58-3384ac303957"
      unitRef="usd">2808000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTUtMi0xLTEtMzYxOTg_acff2460-1561-4675-80a6-4d54f0b2017d"
      unitRef="usd">162642000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTUtNC0xLTEtMzYxOTg_2477a1e8-2fca-4471-b2f6-748a579a86a7"
      unitRef="usd">153002000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <calx:CashCashEquivalentsAndMarketableSecurities
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTYtMi0xLTEtMzYxOTg_3fd67eec-82b9-415f-8032-dd160f72396a"
      unitRef="usd">241715000</calx:CashCashEquivalentsAndMarketableSecurities>
    <calx:CashCashEquivalentsAndMarketableSecurities
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTYtNC0xLTEtMzYxOTg_394a5ece-7f3b-4036-9adc-ff53e14da320"
      unitRef="usd">204335000</calx:CashCashEquivalentsAndMarketableSecurities>
    <us-gaap:DebtSecuritiesAvailableForSaleTerm
      contextRef="ibcead81fc3df41b3a1cf1e698b490bdc_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RleHRyZWdpb246YzE4NTU1MTFhYTgzNGU0NWEyYzg1MzUxMzE3NGE3NWNfMTA5OTUxMTYyODI2MA_0534fd95-142a-4fd9-9101-e488ebfd274d">P2Y</us-gaap:DebtSecuritiesAvailableForSaleTerm>
    <us-gaap:DebtSecuritiesAvailableForSaleTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RleHRyZWdpb246YzE4NTU1MTFhYTgzNGU0NWEyYzg1MzUxMzE3NGE3NWNfMTA5OTUxMTYyODU0Nw_5a77a612-c40b-4584-9dd9-1293381f749a">&lt;div style="margin-top:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The amortized cost and fair value of marketable securities as of December&#160;31, 2022 were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:7pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:45.245%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:2.139%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.835%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.554%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.835%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.554%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.838%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Amortized Cost&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Unrealized Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;114,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,379)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;112,740&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Commercial paper&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,262&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(71)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,191&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,876&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(244)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,632&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Corporate debt securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,312&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,308&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Municipal securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;101&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total marketable securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;203,670&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,699)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;201,971&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:DebtSecuritiesAvailableForSaleTableTextBlock>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent
      contextRef="i48c13f271a7048a49e9f93bc547075a0_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMS0yLTEtMS0zOTY1Mw_5f4b188d-5389-4da6-99f5-9f647ac773e8"
      unitRef="usd">114119000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i48c13f271a7048a49e9f93bc547075a0_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMS00LTEtMS0zOTY1Mw_b235b2ec-bca0-4fdb-a297-9b067fa72e32"
      unitRef="usd">1379000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i48c13f271a7048a49e9f93bc547075a0_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMS02LTEtMS0zOTY1Mw_b0d0f227-eb1b-4742-a8a7-fde62bd70ddf"
      unitRef="usd">112740000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent
      contextRef="i83fd5d90fe6b4285bab023841c3a14b0_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMi0yLTEtMS0zOTY1Mw_3bbc7123-2dec-4880-bb0b-1a547d98c57a"
      unitRef="usd">62262000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i83fd5d90fe6b4285bab023841c3a14b0_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMi00LTEtMS0zOTY1Mw_03802489-a411-4f0c-a5c1-453b99f84247"
      unitRef="usd">71000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i83fd5d90fe6b4285bab023841c3a14b0_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMi02LTEtMS0zOTY1Mw_4a2b7412-9697-4dec-9ead-10400cadb0e7"
      unitRef="usd">62191000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent
      contextRef="i86f4de24126640ba8b71657febb828f0_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMy0yLTEtMS0zOTY1Mw_121baf3a-588d-4a4b-a963-814fe98b0189"
      unitRef="usd">23876000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i86f4de24126640ba8b71657febb828f0_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMy00LTEtMS0zOTY1Mw_510c457e-2023-4744-b4d3-6ddbe0703397"
      unitRef="usd">244000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i86f4de24126640ba8b71657febb828f0_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMy02LTEtMS0zOTY1Mw_3f1a6222-3dc5-4777-ba7d-fb1fd311b1d3"
      unitRef="usd">23632000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent
      contextRef="icd24b2de72464d3ba30d3ad07a4e56cd_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNC0yLTEtMS0zOTY1Mw_14436529-b17d-4169-a9a4-1405b78e7e6b"
      unitRef="usd">3312000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="icd24b2de72464d3ba30d3ad07a4e56cd_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNC00LTEtMS0zOTY1Mw_bc8976cf-34ed-4da9-a280-ebefa4052bfe"
      unitRef="usd">4000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="icd24b2de72464d3ba30d3ad07a4e56cd_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNC02LTEtMS0zOTY1Mw_bac39c6c-afe2-4551-814d-3632b9c15e4a"
      unitRef="usd">3308000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent
      contextRef="i2c3a8629b4304f7eb5ca0f3daa147a20_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNS0yLTEtMS0zOTY1Mw_d4069bfc-cd33-4710-b002-1d1fb6572a7c"
      unitRef="usd">101000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i2c3a8629b4304f7eb5ca0f3daa147a20_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNS00LTEtMS0zOTY1Mw_4685692e-6431-487a-b871-525c690d3e5f"
      unitRef="usd">1000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i2c3a8629b4304f7eb5ca0f3daa147a20_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNS02LTEtMS0zOTY1Mw_aa96b23d-d83a-4ea6-84d1-9400df834f34"
      unitRef="usd">100000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent
      contextRef="ic3ce6d215fd045b89989818cac3c19c7_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNi0yLTEtMS0zOTY1Mw_daa8454d-c450-4498-a230-f7c6220150d8"
      unitRef="usd">203670000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="ic3ce6d215fd045b89989818cac3c19c7_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNi00LTEtMS0zOTY1Mw_90903a94-a09a-4ab5-8bc9-9b5b26557c12"
      unitRef="usd">1699000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="ic3ce6d215fd045b89989818cac3c19c7_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNi02LTEtMS0zOTY1Mw_1af834ea-5cd1-4b43-9428-1ea658fcb1df"
      unitRef="usd">201971000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:FairValueDisclosuresTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RleHRyZWdpb246ZDBlY2YwNGVkNzYxNDdmZWIwMDRhMjI4ODMwN2I4M2JfMTYxMA_d171caaf-8950-46d0-a03e-b570772648fa">Fair Value Measurements&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company measures its cash equivalents and marketable securities at fair value on a recurring basis. Fair value is an exit price, representing the amount that would be received to sell an asset or paid to transfer a liability in an orderly transaction between market participants. As such, fair value is a market-based measurement that should be determined based on assumptions that market participants would use in pricing an asset or liability. The Company utilizes the following three-tier value hierarchy which prioritizes the inputs used in measuring fair value:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;padding-left:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Level 1 &#x2013; Observable inputs that reflect quoted prices (unadjusted) for identical assets or liabilities in active markets.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;padding-left:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Level 2 &#x2013; Observable inputs other than quoted prices included in Level 1 for similar instruments in active markets, quoted prices for identical or similar instruments in markets that are not active, and model-driven valuations in which all significant inputs and significant value drivers are observable in active markets.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;padding-left:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Level 3 &#x2013; Unobservable inputs to the valuation derived from fair valuation techniques in which one or more significant inputs or significant value drivers are unobservable. The fair value hierarchy also requires the Company to maximize the use of observable inputs, when available, and to minimize the use of unobservable inputs when determining inputs and determining fair value.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following tables sets forth the Company&#x2019;s financial assets measured at fair value on a recurring basis based on the three-tier fair value hierarchy (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.835%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.572%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.823%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.572%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.823%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.575%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;As of December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Level 1&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Level 2&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Money market funds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;112,740&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;112,740&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Commercial paper&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,191&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,191&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,632&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,632&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Corporate debt securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,308&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,308&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Municipal securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;113,295&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;89,231&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;202,526&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.835%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.572%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.823%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.572%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.823%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.575%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;As of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Level 1&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Level 2&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Money market funds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,320&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,320&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;60,279&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;60,279&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Commercial paper&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;102,394&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;102,394&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,527&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,527&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Corporate debt securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,565&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,565&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Municipal securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,599&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;115,294&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;177,893&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:FairValueDisclosuresTextBlock>
    <us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RleHRyZWdpb246ZDBlY2YwNGVkNzYxNDdmZWIwMDRhMjI4ODMwN2I4M2JfMTYwMw_7052f650-cb05-4e85-ae32-27484fb20bf4">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following tables sets forth the Company&#x2019;s financial assets measured at fair value on a recurring basis based on the three-tier fair value hierarchy (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.835%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.572%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.823%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.572%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.823%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.575%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;As of December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Level 1&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Level 2&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Money market funds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;112,740&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;112,740&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Commercial paper&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,191&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,191&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,632&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,632&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Corporate debt securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,308&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,308&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Municipal securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;113,295&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;89,231&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;202,526&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.835%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.572%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.823%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.572%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.823%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.575%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;As of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Level 1&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Level 2&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Money market funds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,320&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,320&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;60,279&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;60,279&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Commercial paper&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;102,394&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;102,394&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,527&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,527&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Corporate debt securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,565&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,565&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Municipal securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,599&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;115,294&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;177,893&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="ib4730c11d033405ab26535a7d5d1902a_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMS0xLTEtMS0zNjE5OA_728c37a0-b55b-45f6-aec2-7bab7b9b26d6"
      unitRef="usd">555000</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="i4e5e68f096524db3a6c5289a50bd1e54_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMS0zLTEtMS0zNjE5OA_27467ddc-3529-4818-a91e-0b63460b996b"
      unitRef="usd">0</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="i0ab466283f8f4102886a538b89828f49_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMS01LTEtMS0zNjE5OA_7cc0dfd5-fb70-485a-85d5-368c35b8b665"
      unitRef="usd">555000</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i68862cb4af34489a821a714a84d59703_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMi0xLTEtMS0zNjE5OA_46b180c7-a912-4c7e-817a-dafb59fbb09e"
      unitRef="usd">112740000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="iec2cc538fb224ec88a4f3b699672a078_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMi0zLTEtMS0zNjE5OA_0e18920b-756e-4d06-9cd3-f2823673e419"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i056a524a4298478b90de1f1a23ee2241_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMi01LTEtMS0zNjE5OA_76f91625-11e9-4c7f-bbf7-3beb76a24398"
      unitRef="usd">112740000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i67913f8a27bc47f1be4f5522a875439a_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMy0xLTEtMS0zNjE5OA_4d1c6726-712e-4e9b-9f59-19b54cebb6a9"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="id840696585cf4c0d85ed3042e75c8d4f_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMy0zLTEtMS0zNjE5OA_19eced96-c13c-4c7f-8135-9cc533e02a35"
      unitRef="usd">62191000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="iebc70d6cc46241e39e116d70f0745b5e_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMy01LTEtMS0zNjE5OA_a96114b1-e34f-419f-bd26-8b1ccca43b18"
      unitRef="usd">62191000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="ic8e53431a0164b19b6fd5952ecd4356d_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNC0xLTEtMS0zNjE5OA_78372087-66e1-478f-8cf3-eb3e2897d3c4"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i20829567e15d4e138a070a1d2bd1f296_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNC0zLTEtMS0zNjE5OA_967ab089-d83c-4188-b771-f620f75b7ec6"
      unitRef="usd">23632000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i952170666232494785ca17ec4b0f402f_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNC01LTEtMS0zNjE5OA_6a4ec524-813b-438e-a9ce-ef794365dfe8"
      unitRef="usd">23632000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="iedb70c0486cf430c999ecb779842f9b7_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNS0xLTEtMS0zNjE5OA_29729dd8-08fd-4656-a64d-7e01e0f0c632"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i03feb03d4b1948faa67282c5f94b8b9f_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNS0zLTEtMS0zNjE5OA_10a28d63-44f0-44cf-92e6-3323d527d4e6"
      unitRef="usd">3308000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="iec5c97ff467a498191966be3f6fe21e2_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNS01LTEtMS0zNjE5OA_4454e868-eef1-4623-a80b-188c14c97936"
      unitRef="usd">3308000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i845d08c05ade4329a7d34e722a2a29ee_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNi0xLTEtMS0zNjE5OA_f36014c5-8f4f-428b-8c52-134ef399d57c"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="icbb5af7610094c1ea043d7757229aea7_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNi0zLTEtMS0zNjE5OA_acf547e5-102e-4d0b-a80a-3d7bba7cad30"
      unitRef="usd">100000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i57af706ebf9c4dcfbc3ae9b3887ece24_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNi01LTEtMS0zNjE5OA_40d6f78a-01b8-4340-b950-6460ef56fb25"
      unitRef="usd">100000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="ia446f035a91b4e8cbc5dfb2943bf38cc_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNy0xLTEtMS0zNjE5OA_b92f320c-2618-4893-94d5-291d5c83a1d7"
      unitRef="usd">113295000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i04a13de45df2495e910c5650860ee7ae_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNy0zLTEtMS0zNjE5OA_8297edfa-2d42-4524-9173-316a8fd44738"
      unitRef="usd">89231000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="ibcbd3e4469a449f7b3a0e404714fbb82_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNy01LTEtMS0zNjE5OA_a149db54-0424-4877-976e-521ed6cd2396"
      unitRef="usd">202526000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="i92547be2d4ec4c2fbe99b417670a0c1b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMS0xLTEtMS0zOTY2MQ_31e10d8b-8283-4da2-b6f6-fcbf73435d07"
      unitRef="usd">2320000</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="ie5b3737f696b45309b05ec8486ef71e8_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMS0zLTEtMS0zOTY2MQ_405a6500-0e03-460a-b39b-ab3d4c715888"
      unitRef="usd">0</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="iffabf941f6c24db2bf8711334e47cbaf_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMS01LTEtMS0zOTY2MQ_f326f811-a5bd-49bf-bc56-2db9238bce2e"
      unitRef="usd">2320000</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i17b34b27f19945deb8a3001fdb72bef4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMi0xLTEtMS0zOTY2MQ_8b1b9f47-0dc7-4d85-b9cd-021345a0ee0b"
      unitRef="usd">60279000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i3b2a3664f2194292821239b94d9d12d5_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMi0zLTEtMS0zOTY2MQ_2c314ebf-742b-46ec-8229-81284fdcd242"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i2e365a49d2204d5eb34750b7781343b9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMi01LTEtMS0zOTY2MQ_265cea21-b62d-482a-979d-728fe6c1c5dc"
      unitRef="usd">60279000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="if31b6a989a394506af109a221346eb6d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMy0xLTEtMS0zOTY2MQ_59874a60-48d6-42f0-aabf-762fc9b36fad"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i17abd99a86944a3faf931f3eee82c2c4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMy0zLTEtMS0zOTY2MQ_3bcc44fd-f837-4bb0-b22a-0692d1340539"
      unitRef="usd">102394000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i3ebca95019264ed79a51ec6974672638_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMy01LTEtMS0zOTY2MQ_b59034a7-e85f-4b89-ab23-5cb362927ce7"
      unitRef="usd">102394000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="if01ab496558d41afab2522673093c772_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNC0xLTEtMS0zOTY2MQ_0adc0356-b7a6-4e6e-907f-7d594a874d47"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="ifac485b7e7d44598b822d573869dfc8f_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNC0zLTEtMS0zOTY2MQ_cfbd7e79-c783-47a7-8fe0-58671912e604"
      unitRef="usd">5527000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i682285ed68dc42ae833aa59cfbd46465_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNC01LTEtMS0zOTY2MQ_d23fe273-3c01-47e9-b5ab-e636ad6d6fbd"
      unitRef="usd">5527000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="ifa934a3e48ab4d279f8356602465981e_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNS0xLTEtMS0zOTY2MQ_1564cec7-cba3-422a-99b5-82b7952e7598"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="ib755630aec6046029d3ebd796781b082_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNS0zLTEtMS0zOTY2MQ_b613d0d9-f52d-4731-8ed1-f0af31e29e29"
      unitRef="usd">4565000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i1e4012789050403a8f1ba4ae649dc645_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNS01LTEtMS0zOTY2MQ_e94fdad5-3b46-409e-b4aa-effdf06fa6d3"
      unitRef="usd">4565000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="ib9efcd417c244b0da39cf058581c135d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNi0xLTEtMS0zOTY2MQ_8e02abcf-e35a-4c44-9f01-2eff51b9feb8"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="id5bc9fe6b44f485ea9b213709ae25a11_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNi0zLTEtMS0zOTY2MQ_c64961a6-2fa3-4040-9459-d6c769fd9fce"
      unitRef="usd">2808000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i189b4703619e4017b1fab65dbc717051_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNi01LTEtMS0zOTY2MQ_9384108b-9072-42fb-b59b-bf130c372afb"
      unitRef="usd">2808000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i73bf3f7d4a2e494896bee43a0d38e4ca_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNy0xLTEtMS0zOTY2MQ_0330fdf4-5b00-4a53-830f-9adbd805f787"
      unitRef="usd">62599000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="id818e7cab6a34ee78d221eeb25506d00_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNy0zLTEtMS0zOTY2MQ_72e84002-18e4-4b6a-946d-6ecad8a710e3"
      unitRef="usd">115294000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="ic5caa568a0ce4d57a7e0f3c3a88488d8_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNy01LTEtMS0zOTY2MQ_456b5be3-a8cf-49ea-853e-6f6bb6458232"
      unitRef="usd">177893000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:SupplementalBalanceSheetDisclosuresTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzQ3MQ_fa55b3ed-4e25-4e5a-966b-6d9a453ff14f">Balance Sheet Details&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accounts receivable, net consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:98.538%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.380%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.432%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.027%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.432%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.029%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Accounts receivable&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;94,201&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;85,944&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Allowance for doubtful accounts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(397)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(725)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;93,804&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;85,219&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The table below summarizes the changes in allowance for doubtful accounts and product return liability for the periods indicated (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.076%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:46.490%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.345%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.345%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.345%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.351%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Balance at Beginning of Year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Additions Charged to Expenses or Revenue Net of Recoveries&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Write Offs and Returns&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Balance at &lt;br/&gt;End of Year&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2022:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Allowance for doubtful accounts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;725&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(276)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(52)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;397&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Product return liability&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,836&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,622&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4,497)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,961&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2021:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Allowance for doubtful accounts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,405&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(201)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(479)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;725&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Product return liability&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,888&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,681&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(3,733)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,836&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2020:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Allowance for doubtful accounts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;374&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,085&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(54)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,405&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Product return liability&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;919&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,391&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,422)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,888&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Inventory consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.222%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.035%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.178%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.179%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Raw materials&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;640&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;130&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Finished goods&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;148,520&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;88,750&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;149,160&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;88,880&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:7pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Prepaid expenses and other current assets consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.750%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.446%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.828%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.446%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.830%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Supplier deposits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;39,064&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,191&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Prepaid expenses and other current assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,627&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;24,620&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,691&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;30,811&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property and equipment, net consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.222%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.035%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.178%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.179%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Test equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;44,106&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;39,476&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Computer equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,396&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;11,156&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Software&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;10,389&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,013&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Leasehold improvements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,730&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,351&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Furniture and fixtures&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,153&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,812&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;70,774&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Accumulated depreciation and amortization&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(44,940)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(41,025)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;25,834&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21,783&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:7pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Depreciation and amortization expenses were&#160;$14.3 million, $15.0 million and&#160;$13.7 million for the years ended December&#160;31, 2022, 2021 and 2020, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Other long-term assets consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.750%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.446%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.828%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.446%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.830%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Intangible asset&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,253&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,885&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Other long-term assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;14,889&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,800&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;19,142&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,685&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:7pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Intangible Asset Acquisition&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:7pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In March 2018, and as amended in December 2020, the Company entered into an agreement with a vendor to develop a certain software product and related enhancements pursuant to which the Company is obligated to make revenue-share payments under the program, subject to aggregate fixed revenue-share payments of $15.8&#160;million. The payments are based on a revenue-share rate applied to revenue from the developed-product and the corresponding hardware sales through March 2024. If the minimum revenue-share payments are not achieved by the end of that period, a true-up payment will be due. As of December&#160;31, 2022, the liability, including accrued interest, was $11.4&#160;million, of which $7.2&#160;million is included in &#x201c;Accrued liabilities&#x201d; and $4.2&#160;million in &#x201c;Other long-term liabilities&#x201d; in the accompanying Consolidated Balance Sheet. As of December 31, 2021, the liability, including accrued interest, was $13.2&#160;million, of which $4.7&#160;million was included in &#x201c;Accrued liabilities&#x201d; and $8.5&#160;million in other &#x201c;Other long-term liabilities.&#x201d;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzMTI4OA_027d6b6d-617d-484f-9ecf-b96b9b28d960"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzMTI4OA_50fa3eb5-1337-42a0-a46b-a7c0ec1f6782"&gt;Accrued liabilities&lt;/span&gt;&lt;/span&gt; consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.222%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.035%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.178%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.179%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Compensation and related benefits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;27,813&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,165&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Component inventory held by suppliers&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;10,280&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,611&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Professional and consulting fees&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,307&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,819&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Current portion of revenue-share payments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,210&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,731&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Current portion of warranty and retrofit&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,377&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,076&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Customer advances or rebates&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,653&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,742&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Taxes payable&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,581&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,251&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Operating leases&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,949&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,596&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Freight&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,649&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,997&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Business events&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,167&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Product returns&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,961&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,836&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,527&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,773&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;90,474&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;71,597&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Changes in the Company&#x2019;s accrued warranty and retrofit liability were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.076%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:60.044%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.195%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.195%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.198%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance at beginning of year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,594&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,208&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,294&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Provision for warranty and retrofit charged to cost of revenue&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,315&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,370&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,888&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Utilization of reserve&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,523)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,984)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(3,974)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance at end of year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8,386&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,594&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,208&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Accrued Restructuring Charges&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company initiated a restructuring plan in 2020 to accelerate the Company&#x2019;s platform future and to align with a work-from-anywhere culture. The Company incurred restructuring charges of approximately $6.3&#160;million, consisting of facilities-related charges and severance and other termination related benefits for the year ended December 31, 2020.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In the fourth quarter of 2021, as a result of subleasing the abandoned portion of the Company&#x2019;s San Jose headquarters, the Company reversed $0.8&#160;million in facilities-related charges due to the expected recovery of accrued common areas maintenance fees.&lt;/span&gt;&lt;/div&gt;As of December&#160;31, 2022, the Company had no accrued restructuring charges in the accompanying Consolidated Balance Sheet.</us-gaap:SupplementalBalanceSheetDisclosuresTextBlock>
    <us-gaap:ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzQ5NA_3536d008-f6f6-44aa-8e39-1dc687776bf4">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accounts receivable, net consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:98.538%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.380%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.432%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.027%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.432%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.029%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Accounts receivable&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;94,201&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;85,944&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Allowance for doubtful accounts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(397)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(725)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;93,804&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;85,219&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock>
    <us-gaap:AccountsReceivableGrossCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjA1YzQ2MGM5NjUzOTRmYjZiNmNmNDBmOTZkYjZjNjQ2L3RhYmxlcmFuZ2U6MDVjNDYwYzk2NTM5NGZiNmI2Y2Y0MGY5NmRiNmM2NDZfMi0yLTEtMS0zNjE5OA_e411f615-d323-44a4-a6e9-7de99d50ef9f"
      unitRef="usd">94201000</us-gaap:AccountsReceivableGrossCurrent>
    <us-gaap:AccountsReceivableGrossCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjA1YzQ2MGM5NjUzOTRmYjZiNmNmNDBmOTZkYjZjNjQ2L3RhYmxlcmFuZ2U6MDVjNDYwYzk2NTM5NGZiNmI2Y2Y0MGY5NmRiNmM2NDZfMi00LTEtMS0zNjE5OA_71816d40-b727-478e-9eb3-9df42d9b7ecf"
      unitRef="usd">85944000</us-gaap:AccountsReceivableGrossCurrent>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjA1YzQ2MGM5NjUzOTRmYjZiNmNmNDBmOTZkYjZjNjQ2L3RhYmxlcmFuZ2U6MDVjNDYwYzk2NTM5NGZiNmI2Y2Y0MGY5NmRiNmM2NDZfMy0yLTEtMS0zNjE5OA_9a4f0654-205f-4240-8a77-b33d85af4383"
      unitRef="usd">397000</us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjA1YzQ2MGM5NjUzOTRmYjZiNmNmNDBmOTZkYjZjNjQ2L3RhYmxlcmFuZ2U6MDVjNDYwYzk2NTM5NGZiNmI2Y2Y0MGY5NmRiNmM2NDZfMy00LTEtMS0zNjE5OA_1faf3fce-b535-404a-902e-1220f39514d4"
      unitRef="usd">725000</us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjA1YzQ2MGM5NjUzOTRmYjZiNmNmNDBmOTZkYjZjNjQ2L3RhYmxlcmFuZ2U6MDVjNDYwYzk2NTM5NGZiNmI2Y2Y0MGY5NmRiNmM2NDZfNC0yLTEtMS0zNjE5OA_bedcd568-59e7-4220-9c11-10a608c47cf9"
      unitRef="usd">93804000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjA1YzQ2MGM5NjUzOTRmYjZiNmNmNDBmOTZkYjZjNjQ2L3RhYmxlcmFuZ2U6MDVjNDYwYzk2NTM5NGZiNmI2Y2Y0MGY5NmRiNmM2NDZfNC00LTEtMS0zNjE5OA_9834b75f-7862-4fbe-a5f8-3c188d6072e3"
      unitRef="usd">85219000</us-gaap:AccountsReceivableNetCurrent>
    <calx:ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzQ4OQ_8dea92ee-f209-4a04-89ee-b4ad413a9427">&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The table below summarizes the changes in allowance for doubtful accounts and product return liability for the periods indicated (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.076%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:46.490%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.345%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.345%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.345%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.351%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Balance at Beginning of Year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Additions Charged to Expenses or Revenue Net of Recoveries&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Write Offs and Returns&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Balance at &lt;br/&gt;End of Year&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2022:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Allowance for doubtful accounts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;725&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(276)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(52)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;397&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Product return liability&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,836&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,622&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4,497)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,961&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2021:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Allowance for doubtful accounts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,405&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(201)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(479)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;725&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Product return liability&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,888&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,681&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(3,733)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,836&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2020:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Allowance for doubtful accounts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;374&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,085&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(54)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,405&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Product return liability&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;919&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,391&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,422)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,888&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</calx:ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="ieb051ab610094bc982d7f8bddacb801c_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMi0yLTEtMS0zNjE5OA_716aaf58-60b3-4b0d-808c-393da3a3c090"
      unitRef="usd">725000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="ib92f3ac53aca49de92990fdea96d45fa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMi00LTEtMS0zNjE5OA_d310ad59-38e5-41ad-958c-458f255e0958"
      unitRef="usd">-276000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="ib92f3ac53aca49de92990fdea96d45fa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMi02LTEtMS0zNjE5OA_a7c4af90-d701-4768-9001-71cbc8a97a33"
      unitRef="usd">52000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i8eef97f8547d428085e80cc1cc4f16ce_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMi04LTEtMS0zNjE5OA_d6dc064f-a7fa-4d95-8a5e-07b3f353d39f"
      unitRef="usd">397000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="iebe8abb865a348c58ba05736022e6e1f_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMy0yLTEtMS0zNjE5OA_32e4b0c3-0f89-4af5-815a-66609386fecf"
      unitRef="usd">1836000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i9d905ccbbb3241a997324600f7a5cfc2_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMy00LTEtMS0zNjE5OA_587d09dd-0c46-4526-a0a4-54cc34df18d1"
      unitRef="usd">5622000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i9d905ccbbb3241a997324600f7a5cfc2_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMy02LTEtMS0zNjE5OA_4343ad99-9153-4684-b1d8-7ceebd14cf5a"
      unitRef="usd">4497000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="if617aab8c27e4dc6aab4a0a32d272ca3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMy04LTEtMS0zNjE5OA_7325c845-f4fd-4ea7-b509-7bf2d54a71cc"
      unitRef="usd">2961000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i5782a4e7e94146cbac209e543c2116a3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNS0yLTEtMS0zNjE5OA_51748538-0699-4779-8323-41daed165c6a"
      unitRef="usd">1405000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="iad5ba5a8071f469bbd153fbec01071bb_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNS00LTEtMS0zNjE5OA_ffbadea6-a15e-4c4d-90c0-1af017870981"
      unitRef="usd">-201000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="iad5ba5a8071f469bbd153fbec01071bb_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNS02LTEtMS0zNjE5OA_f6883977-b3d9-46fe-93fa-d18f30ed2e21"
      unitRef="usd">479000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="ieb051ab610094bc982d7f8bddacb801c_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNS04LTEtMS0zNjE5OA_7667d4a1-c3d4-4647-9173-336896e1b7cd"
      unitRef="usd">725000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i915095b41f604af89d5f5c1c0b516f64_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNi0yLTEtMS0zNjE5OA_39c265f9-eea0-46ca-9a06-de145335c5f4"
      unitRef="usd">1888000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i0f99024590684757bf76146dac6621f8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNi00LTEtMS0zNjE5OA_ddc550e4-291f-45af-a3eb-554f57b67375"
      unitRef="usd">3681000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i0f99024590684757bf76146dac6621f8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNi02LTEtMS0zNjE5OA_6eae9b56-63c6-4947-b3c9-f9b66a568705"
      unitRef="usd">3733000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="iebe8abb865a348c58ba05736022e6e1f_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNi04LTEtMS0zNjE5OA_21314124-e19d-4de0-a401-0602b6a3a5a2"
      unitRef="usd">1836000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i87fd0a9a32974808b514ae0e6b4977f2_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOC0yLTEtMS0zNjE5OA_129ad578-50bd-4b99-9e70-90636d045e16"
      unitRef="usd">374000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i92749530cfc04658b8e87d80c4434870_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOC00LTEtMS0zNjE5OA_e05b8f21-b373-476e-82cf-af3b69951951"
      unitRef="usd">1085000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i92749530cfc04658b8e87d80c4434870_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOC02LTEtMS0zNjE5OA_143f34aa-6d4f-4295-a9c3-4526a8bc75a1"
      unitRef="usd">54000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i5782a4e7e94146cbac209e543c2116a3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOC04LTEtMS0zNjE5OA_ca9d5d7c-d081-4a10-90e0-ae9fc45e92a6"
      unitRef="usd">1405000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="ie99c59fbe14a4befb7f451e29f097c4f_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOS0yLTEtMS0zNjE5OA_5715cada-58f8-4495-943c-25bcbdf41a30"
      unitRef="usd">919000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i4827582f665d4174a35e6ed4f0286360_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOS00LTEtMS0zNjE5OA_c0757e63-e108-448e-bbe7-94e94927ac5d"
      unitRef="usd">3391000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i4827582f665d4174a35e6ed4f0286360_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOS02LTEtMS0zNjE5OA_c28bc591-31b0-4eea-a3c3-4f4834e74a47"
      unitRef="usd">2422000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i915095b41f604af89d5f5c1c0b516f64_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOS04LTEtMS0zNjE5OA_7289f553-d80b-4dec-b0d7-51b576a3e60d"
      unitRef="usd">1888000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ScheduleOfInventoryCurrentTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzQ5OQ_0e6ce628-03d2-423e-87fe-bef9505ff56a">&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Inventory consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.222%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.035%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.178%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.179%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Raw materials&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;640&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;130&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Finished goods&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;148,520&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;88,750&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;149,160&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;88,880&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfInventoryCurrentTableTextBlock>
    <us-gaap:InventoryRawMaterialsNetOfReserves
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmZkYTU3NGQ1ZTg4ODQzNjY5ZDhjNWI4NzA5NTI2MDRmL3RhYmxlcmFuZ2U6ZmRhNTc0ZDVlODg4NDM2NjlkOGM1Yjg3MDk1MjYwNGZfMi0yLTEtMS0zNjE5OA_de9c39a5-82fb-4394-b7d7-c75fd2a0cead"
      unitRef="usd">640000</us-gaap:InventoryRawMaterialsNetOfReserves>
    <us-gaap:InventoryRawMaterialsNetOfReserves
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmZkYTU3NGQ1ZTg4ODQzNjY5ZDhjNWI4NzA5NTI2MDRmL3RhYmxlcmFuZ2U6ZmRhNTc0ZDVlODg4NDM2NjlkOGM1Yjg3MDk1MjYwNGZfMi00LTEtMS0zNjE5OA_5de390a9-ca1b-4b86-81e8-0726ed510105"
      unitRef="usd">130000</us-gaap:InventoryRawMaterialsNetOfReserves>
    <us-gaap:InventoryFinishedGoodsNetOfReserves
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmZkYTU3NGQ1ZTg4ODQzNjY5ZDhjNWI4NzA5NTI2MDRmL3RhYmxlcmFuZ2U6ZmRhNTc0ZDVlODg4NDM2NjlkOGM1Yjg3MDk1MjYwNGZfMy0yLTEtMS0zNjE5OA_f5115f68-d0a3-417f-8eae-8b9cd76c7993"
      unitRef="usd">148520000</us-gaap:InventoryFinishedGoodsNetOfReserves>
    <us-gaap:InventoryFinishedGoodsNetOfReserves
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmZkYTU3NGQ1ZTg4ODQzNjY5ZDhjNWI4NzA5NTI2MDRmL3RhYmxlcmFuZ2U6ZmRhNTc0ZDVlODg4NDM2NjlkOGM1Yjg3MDk1MjYwNGZfMy00LTEtMS0zNjE5OA_24927ec3-ce7c-4700-b1dd-29097dd4d464"
      unitRef="usd">88750000</us-gaap:InventoryFinishedGoodsNetOfReserves>
    <us-gaap:InventoryNet
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmZkYTU3NGQ1ZTg4ODQzNjY5ZDhjNWI4NzA5NTI2MDRmL3RhYmxlcmFuZ2U6ZmRhNTc0ZDVlODg4NDM2NjlkOGM1Yjg3MDk1MjYwNGZfNC0yLTEtMS0zNjE5OA_a89d471f-ac64-4f1c-ac41-29122121424b"
      unitRef="usd">149160000</us-gaap:InventoryNet>
    <us-gaap:InventoryNet
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmZkYTU3NGQ1ZTg4ODQzNjY5ZDhjNWI4NzA5NTI2MDRmL3RhYmxlcmFuZ2U6ZmRhNTc0ZDVlODg4NDM2NjlkOGM1Yjg3MDk1MjYwNGZfNC00LTEtMS0zNjE5OA_a4783ed8-1c6b-4f02-ac53-d5b2ea899ae2"
      unitRef="usd">88880000</us-gaap:InventoryNet>
    <us-gaap:DeferredCostsCapitalizedPrepaidAndOtherAssetsDisclosureTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTY0OTI2NzQ1MDAyMQ_73fbc332-429f-4382-b179-9791dd2a42c0">&lt;div style="margin-top:7pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Prepaid expenses and other current assets consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.750%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.446%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.828%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.446%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.830%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Supplier deposits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;39,064&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,191&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Prepaid expenses and other current assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,627&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;24,620&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,691&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;30,811&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:DeferredCostsCapitalizedPrepaidAndOtherAssetsDisclosureTextBlock>
    <us-gaap:DepositsAssetsCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjI4MWI2ZjUxYjU0MzRmNzFhMzNhY2ViZmJlYWRkMWE4L3RhYmxlcmFuZ2U6MjgxYjZmNTFiNTQzNGY3MWEzM2FjZWJmYmVhZGQxYThfMi0yLTEtMS00MTM4Nw_5e21f7ed-e79c-427d-9b99-24d25f56d686"
      unitRef="usd">39064000</us-gaap:DepositsAssetsCurrent>
    <us-gaap:DepositsAssetsCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjI4MWI2ZjUxYjU0MzRmNzFhMzNhY2ViZmJlYWRkMWE4L3RhYmxlcmFuZ2U6MjgxYjZmNTFiNTQzNGY3MWEzM2FjZWJmYmVhZGQxYThfMi00LTEtMS00MTM4Nw_9308563b-7743-4643-b30a-20c73a8041cc"
      unitRef="usd">6191000</us-gaap:DepositsAssetsCurrent>
    <calx:PrepaidExpensesAndOtherAssetsMiscellaneousCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjI4MWI2ZjUxYjU0MzRmNzFhMzNhY2ViZmJlYWRkMWE4L3RhYmxlcmFuZ2U6MjgxYjZmNTFiNTQzNGY3MWEzM2FjZWJmYmVhZGQxYThfMy0yLTEtMS00MTM4Nw_4f10b126-a1e7-4af2-a8d4-56ce33b24944"
      unitRef="usd">23627000</calx:PrepaidExpensesAndOtherAssetsMiscellaneousCurrent>
    <calx:PrepaidExpensesAndOtherAssetsMiscellaneousCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjI4MWI2ZjUxYjU0MzRmNzFhMzNhY2ViZmJlYWRkMWE4L3RhYmxlcmFuZ2U6MjgxYjZmNTFiNTQzNGY3MWEzM2FjZWJmYmVhZGQxYThfMy00LTEtMS00MTM4Nw_6c2c8176-77d9-4364-9683-1e36b462f97b"
      unitRef="usd">24620000</calx:PrepaidExpensesAndOtherAssetsMiscellaneousCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjI4MWI2ZjUxYjU0MzRmNzFhMzNhY2ViZmJlYWRkMWE4L3RhYmxlcmFuZ2U6MjgxYjZmNTFiNTQzNGY3MWEzM2FjZWJmYmVhZGQxYThfNC0yLTEtMS00MTM4Nw_217b8db7-4066-485f-9837-61e0350bcaac"
      unitRef="usd">62691000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjI4MWI2ZjUxYjU0MzRmNzFhMzNhY2ViZmJlYWRkMWE4L3RhYmxlcmFuZ2U6MjgxYjZmNTFiNTQzNGY3MWEzM2FjZWJmYmVhZGQxYThfNC00LTEtMS00MTM4Nw_9e1f5199-ace4-449a-bafb-1436cefb3532"
      unitRef="usd">30811000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:PropertyPlantAndEquipmentTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzQ5NQ_c5ee4b41-7616-4886-832b-5d04ef952dd3">&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property and equipment, net consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.222%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.035%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.178%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.179%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Test equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;44,106&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;39,476&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Computer equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,396&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;11,156&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Software&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;10,389&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,013&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Leasehold improvements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,730&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,351&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Furniture and fixtures&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,153&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,812&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;70,774&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Accumulated depreciation and amortization&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(44,940)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(41,025)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;25,834&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21,783&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:PropertyPlantAndEquipmentTextBlock>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="iebb784ec1d1048e4b3adf4de3e50ed56_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfMi0yLTEtMS0zNjE5OA_dcc3037e-5c70-404d-8942-66374671b7ce"
      unitRef="usd">44106000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="ib3e6d85676a149d5b92fe67b4dd2f810_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfMi00LTEtMS0zNjE5OA_33c9a629-cd3f-4a26-b7fe-fa0b44b768d3"
      unitRef="usd">39476000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="ic272514a784a4bfb9f74d54bf7e6b2d4_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfMy0yLTEtMS0zNjE5OA_b6058394-7b64-4f7a-91c4-9954085dbc9a"
      unitRef="usd">13396000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i9c61681ac2dd40a199c97e498d4424b3_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfMy00LTEtMS0zNjE5OA_0376853d-70a2-40a0-98e5-cefa68437b08"
      unitRef="usd">11156000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="icb4228678bd94611ba039b6b832a6910_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNC0yLTEtMS0zNjE5OA_9fb2a0e0-0599-4163-93f0-844a0b6ca69c"
      unitRef="usd">10389000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="iec140b402bfd43a8810ed0d254278f7f_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNC00LTEtMS0zNjE5OA_a8e402c6-b78e-4c0d-8ee5-2bad9affc31d"
      unitRef="usd">9013000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i6ae01a9fed3143c39a5d8900e11ab1dc_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNS0yLTEtMS0zNjE5OA_25d00388-8136-4fd0-9061-7c657ad3b824"
      unitRef="usd">1730000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="id764aa16db854d7088bcc29cffc1ecd4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNS00LTEtMS0zNjE5OA_cf842b9d-a5ce-439f-81e6-e27cf63df3d9"
      unitRef="usd">1351000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i6ad0d0e543464e82a0d0f6c87834547c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNi0yLTEtMS0zNjE5OA_2c3c23f5-5278-46b0-8c4f-564499c41b66"
      unitRef="usd">1153000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i1ab5679f664a4a9483a2e951b60376c2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNi00LTEtMS0zNjE5OA_846cf51b-08e7-4d9f-848a-1c3c13d020b5"
      unitRef="usd">1812000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNy0yLTEtMS0zNjE5OA_cb33f4a7-1c69-4529-84a1-85fb4f2ee61c"
      unitRef="usd">70774000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNy00LTEtMS0zNjE5OA_d663b34f-2fe0-4ac4-910c-a468d010d86c"
      unitRef="usd">62808000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfOC0yLTEtMS0zNjE5OA_107baa94-b090-4029-b3c4-efe81f084ab5"
      unitRef="usd">44940000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfOC00LTEtMS0zNjE5OA_fdfbf422-bb34-4968-bcd8-c020bdfef10a"
      unitRef="usd">41025000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfOS0yLTEtMS0zNjE5OA_ad142b67-52da-4e9e-99a9-d66a4d9aecd6"
      unitRef="usd">25834000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfOS00LTEtMS0zNjE5OA_973048a6-6050-4f87-9cf2-e8170b1c05b9"
      unitRef="usd">21783000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:Depreciation
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfNDIw_cdc5835b-760a-41e6-a3f3-e436d5453bb8"
      unitRef="usd">14300000</us-gaap:Depreciation>
    <us-gaap:Depreciation
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfNDI0_695fdbad-92c6-4a50-a6f8-2637bb45e8f2"
      unitRef="usd">15000000</us-gaap:Depreciation>
    <us-gaap:Depreciation
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfNDMx_f71e4056-0595-4250-bfcf-3e4d109e9355"
      unitRef="usd">13700000</us-gaap:Depreciation>
    <us-gaap:ScheduleOfOtherAssetsNoncurrentTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzQ5Mw_cedbb4b4-dbd8-4894-ba64-97937e6af227">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Other long-term assets consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.750%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.446%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.828%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.446%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.830%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Intangible asset&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,253&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,885&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Other long-term assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;14,889&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,800&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;19,142&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,685&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfOtherAssetsNoncurrentTextBlock>
    <us-gaap:IntangibleAssetsNetExcludingGoodwill
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmFjMzhmNDEwNjVlZTQ0OTY5MTRlYjQzZmQ1MDkyYTEyL3RhYmxlcmFuZ2U6YWMzOGY0MTA2NWVlNDQ5NjkxNGViNDNmZDUwOTJhMTJfMi0yLTEtMS0zNjE5OA_f0e50d07-b8f6-48e1-b606-65128ec6b7a1"
      unitRef="usd">4253000</us-gaap:IntangibleAssetsNetExcludingGoodwill>
    <us-gaap:IntangibleAssetsNetExcludingGoodwill
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmFjMzhmNDEwNjVlZTQ0OTY5MTRlYjQzZmQ1MDkyYTEyL3RhYmxlcmFuZ2U6YWMzOGY0MTA2NWVlNDQ5NjkxNGViNDNmZDUwOTJhMTJfMi00LTEtMS0zNjE5OA_cd85099f-f67e-4cc5-b95a-bf63381a1b0d"
      unitRef="usd">6885000</us-gaap:IntangibleAssetsNetExcludingGoodwill>
    <us-gaap:OtherAssetsMiscellaneousNoncurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmFjMzhmNDEwNjVlZTQ0OTY5MTRlYjQzZmQ1MDkyYTEyL3RhYmxlcmFuZ2U6YWMzOGY0MTA2NWVlNDQ5NjkxNGViNDNmZDUwOTJhMTJfMy0yLTEtMS0zNjE5OA_96299e2d-0808-4d6a-8761-297c706cdaf7"
      unitRef="usd">14889000</us-gaap:OtherAssetsMiscellaneousNoncurrent>
    <us-gaap:OtherAssetsMiscellaneousNoncurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmFjMzhmNDEwNjVlZTQ0OTY5MTRlYjQzZmQ1MDkyYTEyL3RhYmxlcmFuZ2U6YWMzOGY0MTA2NWVlNDQ5NjkxNGViNDNmZDUwOTJhMTJfMy00LTEtMS0zNjE5OA_97aa2fd1-dc28-4788-ae72-524c58cc082a"
      unitRef="usd">6800000</us-gaap:OtherAssetsMiscellaneousNoncurrent>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmFjMzhmNDEwNjVlZTQ0OTY5MTRlYjQzZmQ1MDkyYTEyL3RhYmxlcmFuZ2U6YWMzOGY0MTA2NWVlNDQ5NjkxNGViNDNmZDUwOTJhMTJfNC0yLTEtMS0zNjE5OA_1db0f7e8-7f90-4d2d-a491-c53185acd19b"
      unitRef="usd">19142000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmFjMzhmNDEwNjVlZTQ0OTY5MTRlYjQzZmQ1MDkyYTEyL3RhYmxlcmFuZ2U6YWMzOGY0MTA2NWVlNDQ5NjkxNGViNDNmZDUwOTJhMTJfNC00LTEtMS0zNjE5OA_aeab9773-a005-436c-8977-a63287dc263b"
      unitRef="usd">13685000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:RoyaltyGuaranteesCommitmentsAmount
      contextRef="ifec7805f58bf4e1eb494b1fd74099264_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTcwOA_5432da6c-822a-4dd4-97bd-8524c97d7511"
      unitRef="usd">15800000</us-gaap:RoyaltyGuaranteesCommitmentsAmount>
    <us-gaap:OtherLiabilities
      contextRef="i64cf409db5e74b9e888f27feb92d3f31_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTcyMw_967d74d6-04ac-4fce-89b1-cbc0a69830c0"
      unitRef="usd">11400000</us-gaap:OtherLiabilities>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i64cf409db5e74b9e888f27feb92d3f31_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTczOA_3b6070dd-afbc-4dcb-a335-67cb799dd2d2"
      unitRef="usd">7200000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i64cf409db5e74b9e888f27feb92d3f31_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTc1Mg_396f73b6-270e-4d8c-84e9-7abaae6f998a"
      unitRef="usd">4200000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:OtherLiabilities
      contextRef="i29707179eee34196994e77484ecb2b78_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTc2Ng_b764596c-c8ec-4564-b32f-abad9a4f2d0b"
      unitRef="usd">13200000</us-gaap:OtherLiabilities>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i29707179eee34196994e77484ecb2b78_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTc4MQ_c0509844-c863-4f45-a603-d0dbe6021844"
      unitRef="usd">4700000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i29707179eee34196994e77484ecb2b78_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTc5NQ_aa15298e-5f6f-4c27-a932-5fc18f67d78f"
      unitRef="usd">8500000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:ScheduleOfAccruedLiabilitiesTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzUwNw_d06f2708-8e92-48ee-ba46-63d195898a4b">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzMTI4OA_027d6b6d-617d-484f-9ecf-b96b9b28d960"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzMTI4OA_50fa3eb5-1337-42a0-a46b-a7c0ec1f6782"&gt;Accrued liabilities&lt;/span&gt;&lt;/span&gt; consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.222%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.035%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.178%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.179%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Compensation and related benefits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;27,813&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,165&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Component inventory held by suppliers&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;10,280&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,611&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Professional and consulting fees&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,307&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,819&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Current portion of revenue-share payments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,210&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,731&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Current portion of warranty and retrofit&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,377&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,076&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Customer advances or rebates&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,653&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,742&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Taxes payable&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,581&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,251&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Operating leases&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,949&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,596&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Freight&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,649&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,997&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Business events&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,167&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Product returns&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,961&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,836&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,527&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,773&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;90,474&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;71,597&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfAccruedLiabilitiesTableTextBlock>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMi0yLTEtMS0zNjE5OA_e5a597ef-7eca-4554-ac83-29d65d842129"
      unitRef="usd">27813000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMi00LTEtMS0zNjE5OA_3a79f1e3-1fc6-46ae-a533-6c3498b32a53"
      unitRef="usd">23165000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <calx:AccruedExcessAndObsoleteInventoryAtContractManufacturer
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMy0yLTEtMS0zNjE5OA_cca2ee23-8373-4595-879c-0c75d5433945"
      unitRef="usd">10280000</calx:AccruedExcessAndObsoleteInventoryAtContractManufacturer>
    <calx:AccruedExcessAndObsoleteInventoryAtContractManufacturer
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMy00LTEtMS0zNjE5OA_00eb1f11-a844-46dd-8804-9886390e87ee"
      unitRef="usd">7611000</calx:AccruedExcessAndObsoleteInventoryAtContractManufacturer>
    <us-gaap:AccruedProfessionalFeesCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNC0yLTEtMS0zNjE5OA_4ef1941d-105d-44ff-ad83-365327424026"
      unitRef="usd">7307000</us-gaap:AccruedProfessionalFeesCurrent>
    <us-gaap:AccruedProfessionalFeesCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNC00LTEtMS0zNjE5OA_e4b5a41d-f849-4f72-b7ee-f68e3a8c6ada"
      unitRef="usd">4819000</us-gaap:AccruedProfessionalFeesCurrent>
    <calx:AccruedRevenueSharePaymentsCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNS0yLTEtMS0zNjE5OA_51ba3f05-dcd5-47c0-a4f2-eec7448d5429"
      unitRef="usd">7210000</calx:AccruedRevenueSharePaymentsCurrent>
    <calx:AccruedRevenueSharePaymentsCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNS00LTEtMS0zNjE5OA_7b2545e9-37e5-4fba-bcdd-d18f247c8d0e"
      unitRef="usd">4731000</calx:AccruedRevenueSharePaymentsCurrent>
    <us-gaap:ProductWarrantyAccrualClassifiedCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNi0yLTEtMS0zNjE5OA_916a4d65-d3a1-421a-b1f6-7ecd742682d9"
      unitRef="usd">6377000</us-gaap:ProductWarrantyAccrualClassifiedCurrent>
    <us-gaap:ProductWarrantyAccrualClassifiedCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNi00LTEtMS0zNjE5OA_e00960ca-3158-456a-9b0a-8fbaa161a6c2"
      unitRef="usd">7076000</us-gaap:ProductWarrantyAccrualClassifiedCurrent>
    <calx:AccruedCustomerRebates
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNy0yLTEtMS0zNjE5OA_ebb3a027-4314-466c-9634-24cb9db265b1"
      unitRef="usd">5653000</calx:AccruedCustomerRebates>
    <calx:AccruedCustomerRebates
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNy00LTEtMS0zNjE5OA_e7c9ce5e-a931-420e-b261-ad1dd421c178"
      unitRef="usd">4742000</calx:AccruedCustomerRebates>
    <calx:TaxesPayableCurrentExcludingAccruedIncomeTaxes
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfOC0yLTEtMS0zNjE5OA_a598b1a4-caa9-48d8-bf80-ce5a1847c2da"
      unitRef="usd">4581000</calx:TaxesPayableCurrentExcludingAccruedIncomeTaxes>
    <calx:TaxesPayableCurrentExcludingAccruedIncomeTaxes
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfOC00LTEtMS0zNjE5OA_55483dcf-1f3f-46a7-9762-abd1c7277f0d"
      unitRef="usd">4251000</calx:TaxesPayableCurrentExcludingAccruedIncomeTaxes>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfOS0yLTEtMS0zNjE5OA_8fe3a963-1b02-4ebb-8e9e-422eb8a7ca08"
      unitRef="usd">3949000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfOS00LTEtMS0zNjE5OA_232ad442-e156-458f-bf28-9d031617bca1"
      unitRef="usd">3596000</us-gaap:OperatingLeaseLiabilityCurrent>
    <calx:AccruedFreight
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTAtMi0xLTEtMzYxOTg_74a185ed-97d1-4748-90e9-733cf860845e"
      unitRef="usd">3649000</calx:AccruedFreight>
    <calx:AccruedFreight
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTAtNC0xLTEtMzYxOTg_fbd8831d-c61c-4e13-9318-1a516ecc1335"
      unitRef="usd">3997000</calx:AccruedFreight>
    <calx:AccruedBusinessEventsCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTEtMi0xLTEtMzYxOTg_ccd16f92-2a0c-44e3-9dbc-496581b1d247"
      unitRef="usd">3167000</calx:AccruedBusinessEventsCurrent>
    <calx:AccruedBusinessEventsCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTEtNC0xLTEtMzYxOTg_46a1d4b6-0622-45be-998e-a440a008c081"
      unitRef="usd">0</calx:AccruedBusinessEventsCurrent>
    <calx:ProductReturnReserveCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTItMi0xLTEtMzYxOTg_c88d26c7-4925-4061-9c7c-357cf3119cea"
      unitRef="usd">2961000</calx:ProductReturnReserveCurrent>
    <calx:ProductReturnReserveCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTItNC0xLTEtMzYxOTg_b669a196-c291-473e-807e-aee6cd2546d0"
      unitRef="usd">1836000</calx:ProductReturnReserveCurrent>
    <us-gaap:OtherAccruedLiabilitiesCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTMtMi0xLTEtMzYxOTg_c4ae9886-7e74-459d-b258-8d5281f90dc5"
      unitRef="usd">7527000</us-gaap:OtherAccruedLiabilitiesCurrent>
    <us-gaap:OtherAccruedLiabilitiesCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTMtNC0xLTEtMzYxOTg_9a245895-de02-41ac-8efb-e1aa33fe7385"
      unitRef="usd">5773000</us-gaap:OtherAccruedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTQtMi0xLTEtMzYxOTg_16b5a560-49ce-406f-95de-4e6a07bb5a8a"
      unitRef="usd">90474000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTQtNC0xLTEtMzYxOTg_7641501f-724a-49dc-886d-f09821a7023f"
      unitRef="usd">71597000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:ScheduleOfProductWarrantyLiabilityTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzQ4Ng_51a043db-dfbb-4a4a-94e9-105b48130805">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Changes in the Company&#x2019;s accrued warranty and retrofit liability were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.076%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:60.044%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.195%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.195%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.198%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance at beginning of year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,594&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,208&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,294&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Provision for warranty and retrofit charged to cost of revenue&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,315&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,370&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,888&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Utilization of reserve&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,523)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,984)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(3,974)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance at end of year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8,386&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,594&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,208&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfProductWarrantyLiabilityTableTextBlock>
    <us-gaap:ProductWarrantyAccrual
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfMi0yLTEtMS0zNjE5OA_f9f8f345-4e41-4505-b86f-8a98e1b6d349"
      unitRef="usd">9594000</us-gaap:ProductWarrantyAccrual>
    <us-gaap:ProductWarrantyAccrual
      contextRef="i5647c99c6e924e9681658be971eaeb0b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfMi00LTEtMS0zNjE5OA_4a2d2cdc-f3c2-472e-87f3-f113341ade83"
      unitRef="usd">9208000</us-gaap:ProductWarrantyAccrual>
    <us-gaap:ProductWarrantyAccrual
      contextRef="ibe3ffb6b029948b89bd038665fa57d44_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfMi02LTEtMS0zNjE5OA_0c8fe711-8a52-43e3-8c26-133a668fae99"
      unitRef="usd">7294000</us-gaap:ProductWarrantyAccrual>
    <us-gaap:ProductWarrantyAccrualWarrantiesIssued
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfMy0yLTEtMS0zNjE5OA_3df8e2ba-36b7-448a-ace7-46330b291953"
      unitRef="usd">1315000</us-gaap:ProductWarrantyAccrualWarrantiesIssued>
    <us-gaap:ProductWarrantyAccrualWarrantiesIssued
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfMy00LTEtMS0zNjE5OA_45a41b4b-7e3b-4c04-be2a-d5a31ace8ca2"
      unitRef="usd">3370000</us-gaap:ProductWarrantyAccrualWarrantiesIssued>
    <us-gaap:ProductWarrantyAccrualWarrantiesIssued
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfMy02LTEtMS0zNjE5OA_82b34a65-26a9-4f5c-8115-a292d66f5b3b"
      unitRef="usd">5888000</us-gaap:ProductWarrantyAccrualWarrantiesIssued>
    <us-gaap:ProductWarrantyAccrualPayments
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfNC0yLTEtMS0zNjE5OA_76d8f45f-8f8a-4f06-8a0e-ca18e0e7a98c"
      unitRef="usd">2523000</us-gaap:ProductWarrantyAccrualPayments>
    <us-gaap:ProductWarrantyAccrualPayments
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfNC00LTEtMS0zNjE5OA_2f4497aa-4dbd-4f6d-8854-e8ddb5db7f4b"
      unitRef="usd">2984000</us-gaap:ProductWarrantyAccrualPayments>
    <us-gaap:ProductWarrantyAccrualPayments
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfNC02LTEtMS0zNjE5OA_e4538c1b-f1a6-4494-870e-8feed6de5fe9"
      unitRef="usd">3974000</us-gaap:ProductWarrantyAccrualPayments>
    <us-gaap:ProductWarrantyAccrual
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfNi0yLTEtMS0zNjE5OA_e1f1c0bf-9bff-4f14-badb-5b777bd4869e"
      unitRef="usd">8386000</us-gaap:ProductWarrantyAccrual>
    <us-gaap:ProductWarrantyAccrual
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfNi00LTEtMS0zNjE5OA_69528ec1-15e8-4320-a5df-286021e7b627"
      unitRef="usd">9594000</us-gaap:ProductWarrantyAccrual>
    <us-gaap:ProductWarrantyAccrual
      contextRef="i5647c99c6e924e9681658be971eaeb0b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfNi02LTEtMS0zNjE5OA_39e499aa-e645-4cba-8b2a-2c7dc6449a2f"
      unitRef="usd">9208000</us-gaap:ProductWarrantyAccrual>
    <us-gaap:RestructuringCharges
      contextRef="ia8bc5723e8d94237a0acf104c58672c9_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMjk3NA_8b666fc4-ebce-42c1-8aa0-73e1f7c42c66"
      unitRef="usd">6300000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="ief29060d1533404bb2cd809c20ef7077_D20211003-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzI1MA_1f5bd372-61d9-4b5c-863e-87c712882d94"
      unitRef="usd">-800000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringReserve
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTgxMg_60c0faa9-2006-42ef-8655-b8c013788608"
      unitRef="usd">0</us-gaap:RestructuringReserve>
    <us-gaap:CommitmentsAndContingenciesDisclosureTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzU4NzA_d4db09fc-fad6-4f68-8810-61a4e6e275f9">Commitments and Contingencies&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Lease Commitments&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company leases office space under non-cancelable operating leases. Certain of the Company&#x2019;s operating leases contain renewal options and rent acceleration clauses. Future minimum payments under the non-cancelable operating leases consisted of the following as of December&#160;31, 2022 (in&#160;thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:75.546%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:6.834%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.320%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ending December 31,&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;Future Minimum Lease Payments&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,629&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2024&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,458&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2025&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,955&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2026 and thereafter&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;531&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total future minimum lease payments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,573&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Less imputed interest&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,182)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 12.25pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;12,391&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:1pt"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:1pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2022, the operating lease liability consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:79.398%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:3.152%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.150%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTphYWZiYmViNzQxMTc0MmUwODc2MTc4NGY1YjBiNGFiYy90YWJsZXJhbmdlOmFhZmJiZWI3NDExNzQyZTA4NzYxNzg0ZjViMGI0YWJjXzAtMC0xLTEtMzYxOTg_0eaed16b-5a85-4f40-8558-3b742d67e1cb"&gt;Accrued liabilities - current portion of operating leases&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,949&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Operating leases&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8,442&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;12,391&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company leases its headquarters office space in San Jose, California under a lease agreement that expires in December 2025. The future minimum lease payments under the lease are $7.3 million and are included in the table for the year ended December&#160;31, 2022 above.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The above tables also include future minimum lease payments for the Company's office facilities in Petaluma, California; Plymouth, Minnesota; Richardson, Texas; Bangalore, India; Nanjing, China; and West Jordan, Utah, which expire at various dates through 2027.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In November 2021, the Company entered into a sublease for a portion of the San Jose headquarters office space that was previously abandoned. The sublease commenced in August 2022 for a term of 39 months. The Company received $0.3&#160;million in sublease income in 2022. Future minimum payments consisted of the following as of December&#160;31, 2022 (in&#160;thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:75.546%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:6.834%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.320%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ending December 31,&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;Future Minimum Sublease Payments&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;750&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2024&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;773&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2025&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;661&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total future minimum sublease payments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,184&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The weighted average discount rate for the Company&#x2019;s operating leases as of December&#160;31, 2022 was 6.1%. The weighted average remaining lease term as of December&#160;31, 2022 was 3.0 years.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;For the years ended December&#160;31, 2022, 2021 and 2020, total rent expense of the Company was $4.6 million, $4.1 million and $4.0 million, respectively. Cash paid within operating cash flows for operating leases was $4.5&#160;million, $3.9 million and $3.8&#160;million for years ended December&#160;31, 2022, 2021 and 2020, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Purchase Commitments&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s CMs and ODMs place orders for certain component inventory in advance based upon the Company&#x2019;s build forecasts in order to reduce manufacturing lead times and ensure adequate component supply. The components are used by the CMs and ODMs to build the products included in the build forecasts. The Company generally does not take ownership of the components held by CMs and ODMs. The Company places purchase orders with its CMs and ODMs in order to fulfill its monthly finished product inventory requirements. The Company incurs a liability when the CMs and ODMs convert the component inventory to a finished product and takes ownership of the finished goods inventory. In the event of termination of services with a manufacturing partner, the Company has purchased, and may be required to purchase in the future, certain of the &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;remaining components inventory held by the CM or ODM as well as any outstanding orders pursuant to the contractual provisions with such CM or ODM. As of December&#160;31, 2022 and 2021, the Company had approximately $340.6 million and $247.3&#160;million, respectively, of outstanding purchase commitments for inventories to be delivered by its suppliers, including CMs and ODMs.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company has from time to time, and subject to certain conditions, reimbursed certain suppliers for component inventory purchases when this inventory has been rendered excess or obsolete, for example due to manufacturing and engineering change orders resulting from design changes, manufacturing discontinuation of products by its suppliers, or in cases where the Company has committed inventory levels that greatly exceed projected demand. The estimated excess and obsolete inventory liabilities related to such manufacturing and engineering change orders and other factors, which are included in accrued liabilities in the accompanying Consolidated Balance Sheets, were $10.3 million and $7.6 million as of December&#160;31, 2022 and 2021, respectively. The Company records the related charges in cost of systems revenue in its Consolidated Statements of Comprehensive Income.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Litigation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;From time to time, the Company is involved in various legal proceedings arising from the normal course of business activities. The Company is not currently a party to any legal proceedings that, if determined adversely to the Company, in management&#x2019;s opinion, are currently expected to individually or in the aggregate have a material adverse effect on the Company&#x2019;s business, operating results or financial condition taken as a whole.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Indemnifications&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company from time to time enters into contracts that require it to indemnify various parties against claims from third parties. These contracts primarily relate to (i)&#160;certain real estate leases, under which the Company may be required to indemnify property owners for environmental and other liabilities, and other claims arising from the Company&#x2019;s use of the applicable premises, (ii)&#160;agreements with the Company&#x2019;s officers, directors and certain employees, under which the Company may be required to indemnify such persons for liabilities arising out of their relationship with the Company, (iii)&#160;contracts under which the Company may be required to indemnify customers against third-party claims that a Company product infringes a patent, copyright or other intellectual property right and (iv)&#160;agreements under which the Company may be required to indemnify the counterparty for certain claims that may be brought against them arising from the Company&#x2019;s acts or omissions with respect to the transactions contemplated by such agreements.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Because any potential obligation associated with these types of contractual provisions are not quantified or stated, the overall maximum amount of the obligation cannot be reasonably estimated. Historically, the Company has not been required to make payments under these obligations, and no liabilities have been recorded for these obligations in the accompanying Consolidated Balance Sheets.&lt;/span&gt;&lt;/div&gt;</us-gaap:CommitmentsAndContingenciesDisclosureTextBlock>
    <us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzU4NjY_ec92ef73-14ef-4c38-97ec-ad7ea5b01154">Future minimum payments under the non-cancelable operating leases consisted of the following as of December&#160;31, 2022 (in&#160;thousands):&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:75.546%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:6.834%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.320%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ending December 31,&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;Future Minimum Lease Payments&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,629&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2024&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,458&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2025&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,955&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2026 and thereafter&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;531&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total future minimum lease payments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,573&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Less imputed interest&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,182)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 12.25pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;12,391&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;</us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTpiNWM5ZDgyYzI1YzQ0YTBlYTU3MzdiZDc1YzI5Y2Y2Ni90YWJsZXJhbmdlOmI1YzlkODJjMjVjNDRhMGVhNTczN2JkNzVjMjljZjY2XzEtMi0xLTEtMzYxOTg_f6b815f3-e663-485e-be9a-5b31a39ff9c1"
      unitRef="usd">4629000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTpiNWM5ZDgyYzI1YzQ0YTBlYTU3MzdiZDc1YzI5Y2Y2Ni90YWJsZXJhbmdlOmI1YzlkODJjMjVjNDRhMGVhNTczN2JkNzVjMjljZjY2XzItMi0xLTEtMzYxOTg_84748910-ca00-40fb-a6fa-6fc17cc67f15"
      unitRef="usd">4458000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTpiNWM5ZDgyYzI1YzQ0YTBlYTU3MzdiZDc1YzI5Y2Y2Ni90YWJsZXJhbmdlOmI1YzlkODJjMjVjNDRhMGVhNTczN2JkNzVjMjljZjY2XzMtMi0xLTEtMzYxOTg_c4224e71-e81b-43d2-9d0a-bd1d61c2f941"
      unitRef="usd">3955000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTpiNWM5ZDgyYzI1YzQ0YTBlYTU3MzdiZDc1YzI5Y2Y2Ni90YWJsZXJhbmdlOmI1YzlkODJjMjVjNDRhMGVhNTczN2JkNzVjMjljZjY2XzQtMi0xLTEtMzYxOTg_06023ec4-9717-44d9-9765-de7fb96d0a92"
      unitRef="usd">531000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTpiNWM5ZDgyYzI1YzQ0YTBlYTU3MzdiZDc1YzI5Y2Y2Ni90YWJsZXJhbmdlOmI1YzlkODJjMjVjNDRhMGVhNTczN2JkNzVjMjljZjY2XzctMi0xLTEtMzYxOTg_35c190de-20af-4126-aaf3-8cfd49a47128"
      unitRef="usd">13573000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue>
    <us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTpiNWM5ZDgyYzI1YzQ0YTBlYTU3MzdiZDc1YzI5Y2Y2Ni90YWJsZXJhbmdlOmI1YzlkODJjMjVjNDRhMGVhNTczN2JkNzVjMjljZjY2XzgtMi0xLTEtMzYxOTg_82ce0a90-c757-459c-875a-ec29e2963e5c"
      unitRef="usd">1182000</us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount>
    <us-gaap:OperatingLeaseLiability
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTpiNWM5ZDgyYzI1YzQ0YTBlYTU3MzdiZDc1YzI5Y2Y2Ni90YWJsZXJhbmdlOmI1YzlkODJjMjVjNDRhMGVhNTczN2JkNzVjMjljZjY2XzktMi0xLTEtMzYxOTg_15d71804-926a-4a74-86f8-c0d246228193"
      unitRef="usd">12391000</us-gaap:OperatingLeaseLiability>
    <calx:LesseeOperatingLeaseLiabilityTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzU4Nzc_79ef7cfd-ebcd-4d4c-8b3f-f74186b51ca5">&lt;div style="margin-top:1pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2022, the operating lease liability consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:79.398%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:3.152%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.150%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTphYWZiYmViNzQxMTc0MmUwODc2MTc4NGY1YjBiNGFiYy90YWJsZXJhbmdlOmFhZmJiZWI3NDExNzQyZTA4NzYxNzg0ZjViMGI0YWJjXzAtMC0xLTEtMzYxOTg_0eaed16b-5a85-4f40-8558-3b742d67e1cb"&gt;Accrued liabilities - current portion of operating leases&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,949&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Operating leases&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8,442&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;12,391&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</calx:LesseeOperatingLeaseLiabilityTableTextBlock>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTphYWZiYmViNzQxMTc0MmUwODc2MTc4NGY1YjBiNGFiYy90YWJsZXJhbmdlOmFhZmJiZWI3NDExNzQyZTA4NzYxNzg0ZjViMGI0YWJjXzAtMi0xLTEtMzYxOTg_82b2606a-83dc-4c06-ba02-7de3ae841f2f"
      unitRef="usd">3949000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTphYWZiYmViNzQxMTc0MmUwODc2MTc4NGY1YjBiNGFiYy90YWJsZXJhbmdlOmFhZmJiZWI3NDExNzQyZTA4NzYxNzg0ZjViMGI0YWJjXzEtMi0xLTEtMzYxOTg_cd39ec51-691f-47d3-8405-2bd895c287d2"
      unitRef="usd">8442000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiability
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTphYWZiYmViNzQxMTc0MmUwODc2MTc4NGY1YjBiNGFiYy90YWJsZXJhbmdlOmFhZmJiZWI3NDExNzQyZTA4NzYxNzg0ZjViMGI0YWJjXzItMi0xLTEtMzYxOTg_dfb058c2-b2c1-4374-9bcf-1da90440adc9"
      unitRef="usd">12391000</us-gaap:OperatingLeaseLiability>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue
      contextRef="ia1b2dc7d18c14276b64719107b47aec1_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzYxMg_7d706461-5a7c-4db2-a862-3dc75791e1d3"
      unitRef="usd">7300000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue>
    <us-gaap:LessorOperatingLeaseTermOfContract
      contextRef="id212028f7d3447bc991b7b183b10250a_I20211130"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzE0NzE_cb841f41-6fee-4423-92de-620ec2f325b2">P39M</us-gaap:LessorOperatingLeaseTermOfContract>
    <us-gaap:SubleaseIncome
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzEwOTk1MTE2MzQzNzM_57354fb8-f318-4255-bc41-8d8eb1b273ff"
      unitRef="usd">300000</us-gaap:SubleaseIncome>
    <us-gaap:LessorOperatingLeasePaymentsToBeReceivedMaturityTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzU4Njk_fd6356b8-7ca6-4772-9bc1-be51a3fff4f6">Future minimum payments consisted of the following as of December&#160;31, 2022 (in&#160;thousands):&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:75.546%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:6.834%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.320%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ending December 31,&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;Future Minimum Sublease Payments&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;750&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2024&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;773&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2025&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;661&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total future minimum sublease payments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,184&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;</us-gaap:LessorOperatingLeasePaymentsToBeReceivedMaturityTableTextBlock>
    <us-gaap:LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTplMGY5MGQxZDM5ZjA0ODA1OWEyM2NhN2VmN2E3MmU4MC90YWJsZXJhbmdlOmUwZjkwZDFkMzlmMDQ4MDU5YTIzY2E3ZWY3YTcyZTgwXzItMi0xLTEtMzYxOTg_cf094f6f-c0a6-47e8-acbd-7937a16ba92e"
      unitRef="usd">750000</us-gaap:LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths>
    <us-gaap:LessorOperatingLeasePaymentsToBeReceivedTwoYears
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTplMGY5MGQxZDM5ZjA0ODA1OWEyM2NhN2VmN2E3MmU4MC90YWJsZXJhbmdlOmUwZjkwZDFkMzlmMDQ4MDU5YTIzY2E3ZWY3YTcyZTgwXzMtMi0xLTEtMzYxOTg_07a45aac-f0bf-4f26-8dca-59c81eb9f01c"
      unitRef="usd">773000</us-gaap:LessorOperatingLeasePaymentsToBeReceivedTwoYears>
    <us-gaap:LessorOperatingLeasePaymentsToBeReceivedThreeYears
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTplMGY5MGQxZDM5ZjA0ODA1OWEyM2NhN2VmN2E3MmU4MC90YWJsZXJhbmdlOmUwZjkwZDFkMzlmMDQ4MDU5YTIzY2E3ZWY3YTcyZTgwXzQtMi0xLTEtMzYxOTg_a1340de1-3296-40f6-99fd-feebc2770670"
      unitRef="usd">661000</us-gaap:LessorOperatingLeasePaymentsToBeReceivedThreeYears>
    <us-gaap:LessorOperatingLeasePaymentsToBeReceived
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTplMGY5MGQxZDM5ZjA0ODA1OWEyM2NhN2VmN2E3MmU4MC90YWJsZXJhbmdlOmUwZjkwZDFkMzlmMDQ4MDU5YTIzY2E3ZWY3YTcyZTgwXzUtMi0xLTEtMzYxOTg_c16988e0-dc45-452c-a38e-66da8e445c08"
      unitRef="usd">2184000</us-gaap:LessorOperatingLeasePaymentsToBeReceived>
    <us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzE2NDM_1f11f47d-c1f7-4a25-a3c4-6e7d03eecb92"
      unitRef="number">0.061</us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzE3MDI_38edc2aa-7d8e-4051-9e3f-0ecf14a3206f">P3Y</us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1>
    <us-gaap:OperatingLeaseCost
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzE3ODU_c625c45e-d5a1-4517-a172-469d300f3e21"
      unitRef="usd">4600000</us-gaap:OperatingLeaseCost>
    <us-gaap:OperatingLeaseCost
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzE3ODk_cf877d75-deb4-4958-933c-f571b597423c"
      unitRef="usd">4100000</us-gaap:OperatingLeaseCost>
    <us-gaap:OperatingLeaseCost
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzE3OTY_870a7afd-efcf-4a26-a641-78846a08279a"
      unitRef="usd">4000000</us-gaap:OperatingLeaseCost>
    <us-gaap:OperatingLeasePayments
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzEwOTk1MTE2MzQzNDU_d5e91cb3-e7bc-4222-a130-ce61dc63996e"
      unitRef="usd">4500000</us-gaap:OperatingLeasePayments>
    <us-gaap:OperatingLeasePayments
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzE4Nzc_b9b949c7-531d-465d-9ab1-327669ab38d2"
      unitRef="usd">3900000</us-gaap:OperatingLeasePayments>
    <us-gaap:OperatingLeasePayments
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzEwOTk1MTE2MzQzNTk_417f8dfb-718b-43e3-b227-a1e39444f461"
      unitRef="usd">3800000</us-gaap:OperatingLeasePayments>
    <us-gaap:PurchaseCommitmentRemainingMinimumAmountCommitted
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzI5NTQ_c459e143-0972-49c9-b502-8be1a49f5544"
      unitRef="usd">340600000</us-gaap:PurchaseCommitmentRemainingMinimumAmountCommitted>
    <us-gaap:PurchaseCommitmentRemainingMinimumAmountCommitted
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzI5NjE_8f04faf1-b173-4737-9f4e-5ad599f8f0ed"
      unitRef="usd">247300000</us-gaap:PurchaseCommitmentRemainingMinimumAmountCommitted>
    <calx:AccruedExcessAndObsoleteInventoryAtContractManufacturer
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzM3ODk_e2631fa7-b8f3-4cbf-94f3-6585b9fa212f"
      unitRef="usd">10300000</calx:AccruedExcessAndObsoleteInventoryAtContractManufacturer>
    <calx:AccruedExcessAndObsoleteInventoryAtContractManufacturer
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzM3OTY_e75a61d8-5281-48d1-8464-0c01ada82e0e"
      unitRef="usd">7600000</calx:AccruedExcessAndObsoleteInventoryAtContractManufacturer>
    <us-gaap:ShareholdersEquityAndShareBasedPaymentsTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDYx_fb9abb14-ca80-4f7a-af95-b89fdccb2d6b">Stockholders&#x2019; Equity &lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Preferred Stock&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Board of Directors has the authority, without a further vote of the stockholders, to designate and issue up to 5.0 million shares of preferred stock in one or more series and to fix the rights, preferences, privileges and restrictions thereof. These rights, preferences and privileges could include dividend rights, conversion rights, voting rights, terms of redemption, liquidation preferences, sinking fund terms and the number of shares constituting any series or the designation of such series, any or all of which may be greater than the rights of common stock. The issuance of the Company&#x2019;s preferred stock could adversely affect the voting power of holders of common stock and the likelihood that such holders will receive dividend payments and payments upon liquidation. In addition, the issuance of preferred stock could have the effect of delaying, deferring or preventing a change in control of the Company or other corporate action. Since the Company&#x2019;s initial public offering, the Board of Directors has not designated any rights, preference or powers of any preferred stock, and no shares of preferred stock have been issued.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Common Stock&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Holders of the Company&#x2019;s common stock are entitled to receive dividends, if any, as may be declared from time to time by the Board of Directors out of legally available funds. No dividends have been declared or paid as of December&#160;31, 2022.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In August 2020, the Company completed an underwritten public offering of 3,220,000 shares of its common stock at $20.00 per share, including a full exercise by the underwriters of their option to purchase an additional 420,000 shares of Common Stock, resulting in net proceeds of $60.1&#160;million, after deducting the underwriting discount and expenses paid by the Company.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Stock Repurchase Program&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In July 2022, the Company&#x2019;s Board of Directors authorized a one-year stock repurchase program for up to $100&#160;million of the Company&#x2019;s common stock. Under the repurchase program, repurchases can be made from time to time using a variety of &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;methods, which may include open market purchases, privately negotiated transactions or otherwise, all in accordance with the rules of the SEC and other applicable legal requirements. The specific timing, price and size of the purchases will depend on prevailing stock prices, general economic and market conditions, and other considerations consistent with the Company&#x2019;s capital allocation strategy. The repurchase program does not obligate the Company to acquire a particular amount of common stock, and the repurchase program may be suspended or discontinued at any time at the Company&#x2019;s discretion. During the year ended December&#160;31, 2022, no repurchases were made under the program.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Equity Incentive Plans&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Stock Options &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;At the Company&#x2019;s 2019 annual meeting of stockholders, the stockholders approved the 2019 Equity Incentive Award Plan (the &#x201c;2019 Plan&#x201d;). The 2019 Plan supersedes and replaces the 2010 Equity Incentive Award Plan (the &#x201c;2010 Plan&#x201d;) and preceding plans. The terms and conditions of the 2010 Plan will continue to govern any outstanding awards granted under the 2010 Plan.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Employees and consultants of the Company, its subsidiaries and affiliates and the Company&#x2019;s Board of Directors members are eligible to receive awards under the 2019 Plan. The 2019 Plan provides for the grant of stock options, stock appreciation rights, restricted stock, restricted stock units or other stock or cash-based awards and dividend equivalents to eligible individuals.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;At the Company&#x2019;s 2022 annual meeting of stockholders, the stockholders approved an increase in the number of shares of common stock issuable under the 2019 Plan by 1.5&#160;million shares. As of December&#160;31, 2022, there were 6.0 million shares available for issuance under the 2019 Plan. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Stock options granted under the 2019 Plan are granted at a price not less than 100% of the fair market value of the common stock on the date of grant. Stock options issued under the 2019 Plan generally vest 25%&#160;on the first anniversary of the vesting commencement date and on a quarterly basis thereafter for a period of an additional three years. The options have a maximum term of ten years.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In February 2021, PSOs exercisable for up to an aggregate of 0.7&#160;million shares of common stock were granted to certain Company executives with a grant date exercise price of $36.74 per share. The actual number of shares earned is contingent upon achievement of annual corporate financial targets for bookings and non-GAAP net income for 2021 (collectively, the &#x201c;2021 Performance Targets&#x201d;) during the one-year performance period. Under the 2021 Performance Targets, if the non-GAAP net income is below 80% of target or bookings are below 90% of target, no shares would be awarded. From this base, shares are awarded on a 50% weighting for both non-GAAP net income and bookings up to 100% for each 2021 Performance Target using a sliding scale.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In February 2022, the Compensation Committee of the Company&#x2019;s Board of Directors certified the results against the 2021 Performance Targets and awarded 97% of PSOs subject to the four-year services condition. As such, 25% of the awarded shares of the PSOs were vested on that date, and the remaining 75% of the shares of common stock will vest in substantially equal quarterly installments over the subsequent 36 months, subject to the executive&#x2019;s continuous service with the Company through the respective vesting dates. Stock-based compensation expense of $3.6&#160;million and $6.3&#160;million was recognized for the years ended December&#160;31, 2022 and 2021, respectively, related to these awards. Also, in February 2022, the Compensation Committee granted PSOs exercisable for up to an aggregate of 0.7&#160;million shares of common stock to certain Company executives with a grant date exercise price of $55.96 per share, using the same plan design as 2021 but with 2022 annual corporate financial targets for bookings and non-GAAP net operating income (collectively, the &#x201c;2022 Performance Targets&#x201d;).&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:112%"&gt;In February 2023, the Compensation Committee of the Company&#x2019;s Board of Directors certified the results against the 2022 Performance Targets and awarded 100% of PSOs subject to the four-year service condition. As such, 25% of the awarded shares of the PSOs were vested on that date, and the remaining 75% of the shares of common stock will vest in substantially equal quarterly installments over the subsequent 36 months, subject to the executive&#x2019;s continuous service with the Company through the respective vesting dates. Stock-based compensation expense of $10.1&#160;million was recognized for the year ended December&#160;31, 2022 related to these awards.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the stock option activity under the Company&#x2019;s equity incentive plans (in thousands, except per share data):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:90.058%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.585%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.585%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.585%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.585%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.243%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted-&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Average&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted-&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Remaining&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Average&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Contractual&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Aggregate&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Number of&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Exercise Price&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Life&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Intrinsic&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Stock Options&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Shares&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Per Share&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;(in years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;&#160;&#160;Value &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:5.2pt;font-weight:700;line-height:100%;position:relative;top:-2.8pt;vertical-align:baseline"&gt;(1)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Outstanding as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,648&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;17.46&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Granted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,423&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;56.04&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Exercised&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(721)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9.28&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Canceled&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(63)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;35.74&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Outstanding as of December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;29.31&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7.5&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;325,828&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Vested and expected to vest as of&#160;December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8,028&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;28.64&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7.4&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;321,015&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Options exercisable as of December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,010&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;14.04&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6.1&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;218,143&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:underline"&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="27" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:112%"&gt;(1) Amounts represent the difference between the exercise price and the fair market value of common stock at December 31, 2022 of $68.43 per share for all &#x201c;in-the-money&#x201d; options outstanding.&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;During the years ended December&#160;31, 2022, 2021 and 2020, total intrinsic value of stock options exercised was $31.0 million, $59.6&#160;million and $6.7&#160;million, respectively. Cash received from employee stock option exercises in 2022, 2021 and 2020 was $6.7&#160;million, $11.2&#160;million and $0.9&#160;million, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Employee Stock Purchase Plans&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The ESPP allows eligible employees to purchase shares of the Company&#x2019;s common stock through payroll deductions of up to 15% of their eligible compensation subject to certain Internal Revenue Code limitations. In addition, participants may purchase up to 2,000 shares of common stock in each offering period.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The offering periods under the ESPP are two six-month offering periods from August 15&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; through February 14&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; and February 15&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; through August 14&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; of each year. The price of common stock purchased under the ESPP is 85% of the lower of the fair market value of the common stock on the commencement date and the end date of each six-month offering period. At the Company&#x2019;s 2022 annual meeting of stockholders, the stockholders approved an increase in the number of shares of common stock issuable under the ESPP by 1.3&#160;million shares. The total shares authorized for issuance under the ESPP increased from 11.1&#160;million shares to 12.4&#160;million shares. As of December&#160;31, 2022, there were 4.7&#160;million shares available for issuance under the ESPP. During the year ended December&#160;31, 2022, 0.2&#160;million shares were purchased under the ESPP. As of December&#160;31, 2022, unrecognized stock-based compensation expense of $0.4&#160;million related to the ESPP is expected to be recognized over a remaining service period of 0.1 years.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The NQ ESPP allows eligible employees to purchase shares of the Company&#x2019;s common stock through payroll deductions of up to 25% of their eligible compensation. Eligible employees have the right to (a) purchase the maximum number of whole shares of common stock that can be purchased with the elected payroll deductions during each offering period for which the employee is enrolled at a purchase price equal to the closing price of the Company&#x2019;s common stock on the last day of such offering period and (b) receive an equal number of shares of the Company&#x2019;s common stock that are subject to a risk of forfeiture in the event the employee terminates employment within the one year period immediately following the purchase date. Beginning in the second quarter of 2022, the NQ ESPP provides quarterly offering periods from May 8&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; through August 7&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;, August 8&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; through November 7&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;, November 8&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; through February 7&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; and February 8&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; through May 7&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;of each year. A transition period began on May 15&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; and ended on August 7&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;. At the Company&#x2019;s 2022 annual meeting of stockholders, the stockholders approved an increase in the number of shares of common stock issuable under the NQ ESPP by 0.8&#160;million shares. The maximum number of shares of common stock currently authorized for issuance under the NQ ESPP is 6.3&#160;million shares, with a maximum of 0.3&#160;million shares allocated per purchase period. As of December&#160;31, 2022, there were 3.0&#160;million shares available for issuance under the NQ ESPP, including the stockholder-approved 0.8&#160;million share increase. During the year ended December&#160;31, 2022, 0.6&#160;million shares were purchased and issued. As of December&#160;31, 2022, unrecognized stock-based compensation expense of $9.3&#160;million related to the NQ ESPP is expected to be recognized over a remaining weighted-average service period of 0.8 years.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Stock-Based Compensation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes stock-based compensation expense (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:50.215%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.408%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.519%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.408%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.519%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.408%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.523%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Cost of revenue:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Products&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,666&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;790&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;575&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Services&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,034&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;668&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;450&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Sales and marketing&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;12,001&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,728&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,273&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Research and development&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;12,165&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,769&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,736&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;General and administrative&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;17,960&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,275&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,926&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;44,826&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;24,230&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,960&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Income tax benefits recognized&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;11,501&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;16,929&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the weighted-average grant date fair values of the Company&#x2019;s stock-based awards granted in the periods indicated:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:86.111%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:55.096%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.667%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.633%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.667%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.633%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.667%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.637%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Stock options&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;31.86&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;26.55&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8.55&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;ESPP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;18.51&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;12.93&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5.52&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;NQ ESPP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;52.91&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;55.50&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;19.40&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company values employee stock purchase rights under the NQ ESPP at the closing market price of the Company&#x2019;s common stock on the date of grant.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company estimates the fair value of stock options and employee stock purchase right under the ESPP at the grant date using the Black-Scholes option-pricing model. This model requires the use of the following assumptions:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;padding-left:40.5pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(i)&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:8.57pt"&gt;Expected volatility of the Company&#x2019;s common stock &#x2013; The Company computes its expected volatility assumption based on a blended volatility (50% historical volatility and 50% implied volatility from traded options on the Company&#x2019;s common stock). The selection of a blended volatility assumption was based upon the Company&#x2019;s assessment that a blended volatility is more representative of the Company&#x2019;s future stock price trend as it weighs the historical volatility with the future implied volatility.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;padding-left:40.5pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(ii)&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:5.8pt"&gt;Expected life of the option award &#x2013; Represents the weighted-average period that the stock options are expected to remain outstanding. The Company&#x2019;s computation of expected life utilizes the simplified method in accordance with Staff Accounting Bulletin No.&#160;110 due to the lack of sufficient historical exercise data to provide a reasonable basis upon which to estimate expected term.&#160;The mid-point between the vesting date and the expiration date is used as the expected term under this method.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;padding-left:40.5pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(iii)&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:3.03pt"&gt;Expected dividend yield &#x2013; The assumption is zero based on the Company&#x2019;s history of not paying dividends and no future expectations of dividend payouts.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;padding-left:40.5pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(iv)&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:3.57pt"&gt;Risk-free interest rate &#x2013; Based on the U.S. Treasury yield curve in effect at the time of grant with maturities approximating the grant&#x2019;s expected life.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the weighted-average assumptions used in estimating the grant-date fair value of stock options and of each employee&#x2019;s purchase right under the ESPP in the periods indicated:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Stock Options&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Expected volatility&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;58&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;56&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;53&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Expected life (years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6.1&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6.0&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6.1&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Risk-free interest rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3.15&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1.11&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.48&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;ESPP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Expected volatility&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;63&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;70&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Expected life (years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.5&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.5&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.4&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Risk-free interest rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2.16&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.05&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.12&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In addition, the Company applies an estimated forfeiture rate to awards granted and records stock-based compensation expense only for those awards that are expected to vest. Forfeiture rates are estimated at the time of grant based on the Company&#x2019;s historical experience. Further, to the extent the Company&#x2019;s actual forfeiture rate is different from management&#x2019;s estimate, stock-based compensation is adjusted accordingly.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2022, unrecognized stock-based compensation expense by award type, net of estimated forfeitures, and their expected weighted-average recognition periods are summarized in the following table (in thousands).&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:63.304%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:58.715%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:2.340%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:16.451%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:2.340%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:16.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Stock Option&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;ESPPs&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Unrecognized stock-based compensation expense&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;73,095&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,781&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Weighted-average amortization period (in years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2.3&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.8&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:1pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company expects to recognize stock-based compensation expense of $37.2 million in 2023, $22.0 million in 2024, $16.0 million in 2025 and $7.7 million in 2026. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Shares Reserved for Future Issuance &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2022, the Company had common shares reserved for future issuance as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:77.631%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:82.704%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.871%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.025%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Stock options outstanding&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Shares available for future grant under 2019 Plan&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,986&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Shares available for future issuance under ESPP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,712&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Shares available for future issuance under NQ ESPP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,043&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 12.25pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;22,028&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ShareholdersEquityAndShareBasedPaymentsTextBlock>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzE2Mg_a41d7077-3872-4311-b6db-2cb7b1959931"
      unitRef="shares">5000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzE2Mg_be6ae076-d8d3-4ccf-9fcb-f376c3f37131"
      unitRef="shares">5000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzExMzU_2e89c7dd-7479-46cf-bacd-53b34b28f830"
      unitRef="shares">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzExMzU_44134196-220e-4e7f-adc5-32c791377611"
      unitRef="shares">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzExMzU_8125353f-1c57-4ac6-a8c9-739c11c3e91f"
      unitRef="shares">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzExMzU_b5acc682-1add-4af0-a2b3-a6fd8860275b"
      unitRef="shares">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:CommonStockDividendsPerShareDeclared
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNzE_c0d0755d-632b-4f61-a63d-75a14dbc4f73"
      unitRef="usdPerShare">0</us-gaap:CommonStockDividendsPerShareDeclared>
    <us-gaap:SaleOfStockNumberOfSharesIssuedInTransaction
      contextRef="i7fadbf2c253d413a88bde1b78e167eca_D20200801-20200831"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzE5MDA_ff836926-657a-4f18-adc1-124b9d531ead"
      unitRef="shares">3220000</us-gaap:SaleOfStockNumberOfSharesIssuedInTransaction>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="ia82b2d49648943eaa5310ec5fb3becca_I20200831"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzE5MzM_4b25d1ca-7ebb-4fd4-8d23-3a4e0ffbde7d"
      unitRef="usdPerShare">20.00</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:SaleOfStockNumberOfSharesIssuedInTransaction
      contextRef="i91bded7562bb4301ad3b554b40d54850_D20200801-20200831"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzIwMzU_cd024d7f-8934-49b9-89fe-3363da17bf55"
      unitRef="shares">420000</us-gaap:SaleOfStockNumberOfSharesIssuedInTransaction>
    <us-gaap:SaleOfStockConsiderationReceivedOnTransaction
      contextRef="i91bded7562bb4301ad3b554b40d54850_D20200801-20200831"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzIwOTE_290174e1-8cb5-4800-8678-a052eca4bdc7"
      unitRef="usd">60100000</us-gaap:SaleOfStockConsiderationReceivedOnTransaction>
    <us-gaap:StockRepurchaseProgramPeriodInForce1
      contextRef="i505f47a2e1ed4f3195b453dfbe6a64f4_D20220701-20220731"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk0MzM_d139e841-9587-45a7-b5c9-a46941a6d427">P1Y</us-gaap:StockRepurchaseProgramPeriodInForce1>
    <us-gaap:StockRepurchaseProgramAuthorizedAmount1
      contextRef="idc3cb693fe5140938ac10dd90b12e4b3_I20220731"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk0MzU_1e9aea67-0793-4586-bdf0-f07ee7ba604c"
      unitRef="usd">100000000</us-gaap:StockRepurchaseProgramAuthorizedAmount1>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares
      contextRef="i3cbfffa9694a42a389d948ddc37f1e20_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzQwNzA_892717ad-1d54-4187-8571-1f24d586b617"
      unitRef="shares">1500000</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant
      contextRef="i3cbfffa9694a42a389d948ddc37f1e20_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzQxMDI_4f2622d0-7e1a-4163-90de-0c3bf2d63f41"
      unitRef="shares">6000000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant>
    <calx:MinimumExercisePriceOfStockOptionPercent
      contextRef="i41eb5021bb2b41b5b265a980031bec90_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzQyMzY_75220fe0-0a11-4cab-b34f-03681a7af0f2"
      unitRef="number">1</calx:MinimumExercisePriceOfStockOptionPercent>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage
      contextRef="i8c139b1f6d274d5e8a525134045a6df8_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzQzNjI_b07e076d-cafe-4fa9-9ce0-e873f751c763"
      unitRef="number">0.25</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="i75d90d403aa54a2294076893730c0ec6_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzQ0ODk_b7e8049a-5a9a-4115-9c26-2071a25e0c9f">P3Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <calx:ContractualTermStockOptions
      contextRef="i41eb5021bb2b41b5b265a980031bec90_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzQ1Mjg_99dc242e-7faa-4df7-8be8-69974e806a48">P10Y</calx:ContractualTermStockOptions>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzU5MzQ_10ed242e-d302-451e-9bd2-122d05f61b01"
      unitRef="shares">700000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzYwMzk_a55ea2f5-eba7-4d52-b2cf-d0887c754f5d"
      unitRef="usdPerShare">36.74</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1
      contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDgw_780b1b31-972a-40c5-b66a-a539790fb81a">P1Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent
      contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzYzNjE_bb4d6643-9808-4c27-a94e-946befb519a7"
      unitRef="number">0.80</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent
      contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzYzOTY_32eafe13-2625-46c8-9b57-6d33120c9127"
      unitRef="number">0.90</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet
      contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzY0MTA_6d184a44-3687-4495-9f8f-f7e4326ae84c"
      unitRef="shares">0</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent
      contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzY0Nzg_ac1cca95-8772-4799-9357-181f0b2ae50b"
      unitRef="number">0.50</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent
      contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzY1Mzk_7807662d-1feb-428c-a24f-8f76e915f9cc"
      unitRef="number">1</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition
      contextRef="ifc83d7d9ef314c2da18ad45d02064e43_I20220228"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzY3NTA_163a32c7-0722-4b1e-ae25-8e1605d7cc9f"
      unitRef="number">0.97</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition>
    <calx:PerformanceTargetsServicesConditionPeriod
      contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDkw_917d1db9-f00b-4414-b029-f3de3905762a">P4Y</calx:PerformanceTargetsServicesConditionPeriod>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage
      contextRef="i965de145a5b34dcd8fa276603435fdac_D20210201-20210228"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzY4MTM_27f0dcf1-5da5-4ee8-934b-365a33594379"
      unitRef="number">0.25</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage
      contextRef="i700305bde84145bb849464dd58867c37_D20210201-20210228"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzY4OTQ_528e607c-da54-47b4-b6ae-8a9fa3e63c8c"
      unitRef="number">0.75</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="i700305bde84145bb849464dd58867c37_D20210201-20210228"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzcwMDA_ee82c4ed-dc9a-44e0-9edf-c1afb03fa93f">P36M</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensation
      contextRef="i638345f07d274c7894c3feb7fb3b1042_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzcxNDE_19b77821-1456-4c93-881b-221310fa26ca"
      unitRef="usd">3600000</us-gaap:ShareBasedCompensation>
    <us-gaap:ShareBasedCompensation
      contextRef="i541d20d065cc4fd69f959b3cae672349_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk0NDk_293228c4-930b-4ecc-b8c9-f19dc765a67e"
      unitRef="usd">6300000</us-gaap:ShareBasedCompensation>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="ida3289d8c97f4feda1965fdc60834811_D20220201-20220228"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk0NjM_6433d6a4-d252-466d-a670-d08231b5b855"
      unitRef="shares">700000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="ida3289d8c97f4feda1965fdc60834811_D20220201-20220228"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk0NzY_70b3b7f9-5641-4161-b4df-293a314b017b"
      unitRef="usdPerShare">55.96</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition
      contextRef="i295a35bf54c94432a53d75c53f7fd8cb_I20230228"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk0ODQ_567baf9d-7e06-4380-bd7a-be637bd0742a"
      unitRef="number">1</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition>
    <calx:PerformanceTargetsServicesConditionPeriod
      contextRef="if0e6bad883de4fcf86c4c0bdd31069fb_D20230201-20230228"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk1MzU_1fcb54d3-e4b4-40aa-9ff5-da3abe3ab45e">P4Y</calx:PerformanceTargetsServicesConditionPeriod>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage
      contextRef="iec5297cc8cee403da61498dad383a323_D20230201-20230228"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk1MDM_33133a5d-928f-498a-b4c0-cc3aba194e97"
      unitRef="number">0.25</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage
      contextRef="ic11cc38580b54c38bdedf1d2424db347_D20230201-20230228"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk1MDg_d89254c9-ff1b-4a2c-82e1-cdf1312ae59f"
      unitRef="number">0.75</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="ic11cc38580b54c38bdedf1d2424db347_D20230201-20230228"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk1MTU_5b97a167-25a1-4459-b3c1-f886361b5209">P36M</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensation
      contextRef="if3854c3da7554041bf128b38014a78ec_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk1MjE_6efeca8c-0c9f-4023-a984-2f8bdfb04830"
      unitRef="usd">10100000</us-gaap:ShareBasedCompensation>
    <us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDU1_85c94df3-fccd-487a-b282-7ac5bed84e50">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the stock option activity under the Company&#x2019;s equity incentive plans (in thousands, except per share data):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:90.058%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.585%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.585%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.585%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.585%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.243%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted-&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Average&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted-&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Remaining&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Average&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Contractual&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Aggregate&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Number of&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Exercise Price&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Life&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Intrinsic&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Stock Options&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Shares&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Per Share&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;(in years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;&#160;&#160;Value &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:5.2pt;font-weight:700;line-height:100%;position:relative;top:-2.8pt;vertical-align:baseline"&gt;(1)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Outstanding as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,648&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;17.46&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Granted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,423&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;56.04&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Exercised&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(721)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9.28&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Canceled&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(63)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;35.74&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Outstanding as of December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;29.31&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7.5&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;325,828&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Vested and expected to vest as of&#160;December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8,028&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;28.64&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7.4&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;321,015&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Options exercisable as of December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,010&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;14.04&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6.1&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;218,143&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:underline"&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="27" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:112%"&gt;(1) Amounts represent the difference between the exercise price and the fair market value of common stock at December 31, 2022 of $68.43 per share for all &#x201c;in-the-money&#x201d; options outstanding.&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzYtMi0xLTEtMzYxOTg_1145cee9-aa4a-4d11-8a7e-2a5f026a9f3b"
      unitRef="shares">6648000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzYtNC0xLTEtMzYxOTg_c54c8b1b-b033-4c63-b0e1-83c31c0e25f7"
      unitRef="usdPerShare">17.46</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzctMi0xLTEtMzYxOTg_a5ee0d53-e542-4bca-b00d-ce88af58fc2c"
      unitRef="shares">2423000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzctNC0xLTEtMzYxOTg_5577b267-edcc-4f99-bb42-dfad445607ec"
      unitRef="usdPerShare">56.04</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzgtMi0xLTEtMzYxOTg_aa8890c0-4f07-4f50-833b-229a08bb6c09"
      unitRef="shares">721000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzgtNC0xLTEtMzYxOTg_91f2378c-f8bb-4dd7-bf4b-4f6b4a0e54d1"
      unitRef="usdPerShare">9.28</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzktMi0xLTEtMzYxOTg_6911c884-442e-4b27-82cf-07af2a3ec25c"
      unitRef="shares">63000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzktNC0xLTEtMzYxOTg_2a842dda-8344-44c4-ba51-85fabc3d46b9"
      unitRef="usdPerShare">35.74</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzExLTItMS0xLTM2MTk4_99284bd4-6a10-470f-9daa-128ee16cc0e3"
      unitRef="shares">8287000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzExLTQtMS0xLTM2MTk4_3d9de76b-e63b-4cca-b1fd-b2a396165d0b"
      unitRef="usdPerShare">29.31</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzExLTYtMS0xLTM2MTk4_dfc6d9ab-3542-4515-a1c6-094e40b9fef5">P7Y6M</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzExLTgtMS0xLTM2MTk4_ae9df066-7d99-4af6-87ed-278291878c94"
      unitRef="usd">325828000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEyLTItMS0xLTM2MTk4_8a74d635-8bb7-4a17-be8e-48978fcc5e03"
      unitRef="shares">8028000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEyLTQtMS0xLTM2MTk4_21f49a73-8125-4a04-b746-11c8134f75b7"
      unitRef="usdPerShare">28.64</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEyLTYtMS0xLTM2MTk4_2de17dd9-33ad-4e77-99bc-e2bd8333cfcb">P7Y4M24D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEyLTgtMS0xLTM2MTk4_4392676f-64de-45cc-a96f-33250736bf08"
      unitRef="usd">321015000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEzLTItMS0xLTM2MTk4_05a1ff50-345d-454c-a65d-da7dd8e5b78f"
      unitRef="shares">4010000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEzLTQtMS0xLTM2MTk4_3ef69f85-0565-4793-9526-4f436c523719"
      unitRef="usdPerShare">14.04</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEzLTYtMS0xLTM2MTk4_b417d61c-4270-4efa-a062-cde65880835d">P6Y1M6D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEzLTgtMS0xLTM2MTk4_92dcee82-ac17-4235-82e7-ef693be10245"
      unitRef="usd">218143000</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1>
    <calx:SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzE1LTAtMS0xLTM2MTk4L3RleHRyZWdpb246MmMyZWRmMWU0MjRhNDZlM2I2ZWY1NWExNDRjZjU5MmFfMTM1_33986a18-a7f4-4f51-ab93-14875e2bba5d"
      unitRef="usdPerShare">68.43</calx:SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc0NzI_8e300819-9db3-41fc-8afe-298af61c26bd"
      unitRef="usd">31000000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc0NzY_4272bd93-f439-480f-bb44-795cba9eb89b"
      unitRef="usd">59600000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc0ODM_0b671b7f-1948-4e0e-a2f8-a1ec267ff0ff"
      unitRef="usd">6700000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc1OTU_7e965b3c-3b1d-4ccb-8a4d-a96d0f8f65a3"
      unitRef="usd">6700000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc1OTk_d16c52c4-0163-4abc-8b7d-39f0eddf54ad"
      unitRef="usd">11200000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc2MDY_49acdfce-6035-4376-9533-9130215ecb59"
      unitRef="usd">900000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate
      contextRef="iee534fe4989d4adfa556c7ec64860bfa_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc3NzQ_50f09694-8233-4fe2-9846-2d0dddbd2e01"
      unitRef="number">0.15</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee
      contextRef="i44ecf0f2430144758b1f145ea2273bbc_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc5MTM_d9786033-d5c6-48b7-a1a9-d9194d1270c4"
      unitRef="shares">2000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods
      contextRef="iee534fe4989d4adfa556c7ec64860bfa_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzgwMDQ_738fc667-cb35-4521-9577-07ffb86281be"
      unitRef="period">2</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods>
    <calx:SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod
      contextRef="i44ecf0f2430144758b1f145ea2273bbc_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDcx_b7cb3f20-f247-4ba8-a63f-0b540ceb8551">P6M</calx:SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent
      contextRef="i44ecf0f2430144758b1f145ea2273bbc_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzE2NDkyNjc0NTUxNzY_4127732e-bec6-4ffe-a31e-b8a2189b8147"
      unitRef="number">0.85</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent>
    <calx:SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod
      contextRef="i44ecf0f2430144758b1f145ea2273bbc_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDY0_c640f894-ec39-4500-9557-0d40c6410220">P6M</calx:SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized
      contextRef="i880c5d0fdabc49049e2803cb35fd9265_D20190501-20190531"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg0NzU_e01161a9-58d0-4032-b720-ade3fc14cc95"
      unitRef="shares">1300000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized
      contextRef="i0ec7c77a75e44d88b5272edccf8226e0_I20190430"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg1NTc_dade7f94-bd7d-46a8-928e-d31f913fcbaf"
      unitRef="shares">11100000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized
      contextRef="if0e209b492c749879687a6547794124c_I20190531"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg1NzA_1b636a67-78a4-4e0e-adad-37ad07dcb797"
      unitRef="shares">12400000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant
      contextRef="iee534fe4989d4adfa556c7ec64860bfa_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg2MDI_ff171273-191b-49b0-b0a8-544157440fad"
      unitRef="shares">4700000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant>
    <us-gaap:StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan
      contextRef="i44ecf0f2430144758b1f145ea2273bbc_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg2Nzc_dbdd4f29-9022-4e09-922f-bc63e12b1ac3"
      unitRef="shares">200000</us-gaap:StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions
      contextRef="iee534fe4989d4adfa556c7ec64860bfa_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg3Nzc_9450d4fa-2c60-43ec-b808-762886f6ddc4"
      unitRef="usd">400000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="i44ecf0f2430144758b1f145ea2273bbc_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg4NjQ_6c4a8527-336e-4f58-9f7f-5f21b5582c50">P0Y1M6D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent
      contextRef="i0986e5e1ce1a47cc98bf9ebd29d80c03_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg5OTc_91ae3c23-ad49-4de2-ac91-e61f2e8186d2"
      unitRef="number">0.25</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture
      contextRef="i528f094095914bb2b53b77fdc1cf04e5_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzk1NDM_7d9fbd9b-0dd9-46fb-85ab-d56c24d078d1">P1Y</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized
      contextRef="i5b465428849c4e708a3b9d04506880c1_D20200501-20200531"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzk4OTE_8e627c2b-75a4-4912-aa90-3587cac763e1"
      unitRef="shares">800000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized
      contextRef="i26ca0d92b2424298b0bcea3c569b00ba_I20200531"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwMDAy_4beae738-d22f-4b41-8321-9b8047dfd865"
      unitRef="shares">6300000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod
      contextRef="i26ca0d92b2424298b0bcea3c569b00ba_I20200531"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwMDMx_a9878fcd-34f7-442f-890b-be50fbfb8da5"
      unitRef="shares">300000</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant
      contextRef="i0986e5e1ce1a47cc98bf9ebd29d80c03_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwMDkz_014af307-e74c-4696-8e1a-3878e58614ce"
      unitRef="shares">3000000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares
      contextRef="i0986e5e1ce1a47cc98bf9ebd29d80c03_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwMTgw_7133315d-c3d2-4dc8-8b78-c53362f5b50b"
      unitRef="shares">800000</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward
      contextRef="i528f094095914bb2b53b77fdc1cf04e5_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwMjI1_77420476-6260-4384-81d6-64beabdc5366"
      unitRef="shares">600000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod
      contextRef="i528f094095914bb2b53b77fdc1cf04e5_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwMjI1_89be2776-c058-4006-a433-e55da3d1d829"
      unitRef="shares">600000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions
      contextRef="i0986e5e1ce1a47cc98bf9ebd29d80c03_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwMzIx_2bfcea1b-1a05-41b2-98f9-beb456dbc50c"
      unitRef="usd">9300000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="i528f094095914bb2b53b77fdc1cf04e5_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwNDI4_db204733-25a6-4f73-bb64-f8e2de4797cd">P0Y9M18D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <us-gaap:DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDgx_df90a265-c11f-4d53-be85-e9531572fc3b">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes stock-based compensation expense (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:50.215%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.408%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.519%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.408%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.519%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.408%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.523%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Cost of revenue:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Products&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,666&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;790&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;575&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Services&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,034&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;668&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;450&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Sales and marketing&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;12,001&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,728&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,273&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Research and development&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;12,165&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,769&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,736&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;General and administrative&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;17,960&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,275&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,926&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;44,826&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;24,230&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,960&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Income tax benefits recognized&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;11,501&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;16,929&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i58c539110982492a8e0b62fd8b455319_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzMtMi0xLTEtMzYxOTg_1d1b751c-84ec-4537-bc5b-ed04fde60243"
      unitRef="usd">1666000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="if4be25f0af9f4b0ea5f22877ddbfebd7_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzMtNC0xLTEtMzYxOTg_796e48c0-9e12-4185-8ac4-bd11ff498610"
      unitRef="usd">790000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i72cf599545d14ebc9ce8787ba50c5aa0_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzMtNi0xLTEtMzYxOTg_359c57ee-4dea-4d89-aa59-ea736bff3815"
      unitRef="usd">575000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="idaed2f6c8c27442a8b45142b76ced351_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzQtMi0xLTEtMzYxOTg_65c879ff-bee7-4725-b555-34d9a40b3a96"
      unitRef="usd">1034000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i4106eb5f32cc4149875537163855706f_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzQtNC0xLTEtMzYxOTg_61fcc3fe-91f7-433a-a363-d551aa102f5e"
      unitRef="usd">668000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ic93cf0acaeed4e3b979094ca720d677c_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzQtNi0xLTEtMzYxOTg_9ac80b04-b485-4aa6-ab2a-44f3f125a90b"
      unitRef="usd">450000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i7662d716785e4f228c33abfdf3c8f4b3_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzUtMi0xLTEtMzYxOTg_4209bb87-f5fc-4f80-bf59-bd2d9cf93edd"
      unitRef="usd">12001000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i551b31ab695c495abc571c977cc81179_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzUtNC0xLTEtMzYxOTg_09104d62-6b88-4c11-b244-188eb9457a4e"
      unitRef="usd">6728000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ib672ba4f581b4efb88684284d82eeeee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzUtNi0xLTEtMzYxOTg_02b78550-9d76-4156-b784-11aae0bdd2f1"
      unitRef="usd">4273000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i077d8297ff7e49b0bbfd5fe52a5f1bf7_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzYtMi0xLTEtMzYxOTg_727c5a5d-92d0-424c-9391-0b8c232c2156"
      unitRef="usd">12165000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ic6675333d4254a57862012c889ba560e_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzYtNC0xLTEtMzYxOTg_6e0481f5-2f1f-42d9-9ba1-9beac4a2d759"
      unitRef="usd">6769000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i3a828b5e5a764680970a3d824b40aca7_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzYtNi0xLTEtMzYxOTg_f1470a6f-3f38-42d7-a746-22d3447f9744"
      unitRef="usd">4736000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i44b5a1d07f9948e1b8ee67a159f31b98_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzctMi0xLTEtMzYxOTg_8767e69c-0782-4b39-9e9a-b111e3a837e7"
      unitRef="usd">17960000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="id9c1cab1298a4f73ab040395f2f7faa1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzctNC0xLTEtMzYxOTg_8aa6edfe-ede2-4799-b47f-5d71a17a7b3e"
      unitRef="usd">9275000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ic8e79da6e7d2470fa750cd2afb19e759_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzctNi0xLTEtMzYxOTg_0ce92471-2a2c-4000-aee8-bc7571fc666e"
      unitRef="usd">3926000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzgtMi0xLTEtMzYxOTg_a49ed5ff-cd2b-41c0-8e0a-9445bf3f5576"
      unitRef="usd">44826000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzgtNC0xLTEtMzYxOTg_801f914a-6ec4-445f-aee3-02b3112738b1"
      unitRef="usd">24230000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzgtNi0xLTEtMzYxOTg_bcd7dd60-5d42-4159-955d-1f14716ff065"
      unitRef="usd">13960000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzktMi0xLTEtNDEwNzg_3b4a4dfa-8331-4e04-9e0a-13c59d8febf9"
      unitRef="usd">11501000</us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense>
    <us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzktNC0xLTEtNDEwNzg_d777e2ef-68f0-4580-85c5-b859ea256c4b"
      unitRef="usd">16929000</us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense>
    <us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzktNi0xLTEtNDEwNzg_f5d02f19-cb9b-434e-bcd7-c00e1781d2c0"
      unitRef="usd">0</us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense>
    <calx:ScheduleOfGrantDateFairValuesTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDcz_c48a0bd8-b906-4062-b5e5-c96e0b5b7baa">&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the weighted-average grant date fair values of the Company&#x2019;s stock-based awards granted in the periods indicated:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:86.111%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:55.096%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.667%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.633%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.667%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.633%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.667%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.637%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Stock options&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;31.86&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;26.55&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8.55&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;ESPP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;18.51&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;12.93&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5.52&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;NQ ESPP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;52.91&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;55.50&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;19.40&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</calx:ScheduleOfGrantDateFairValuesTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzItMi0xLTEtMzYxOTg_a47e118b-6217-45ce-97c6-c3f915e25d41"
      unitRef="usdPerShare">31.86</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzItNC0xLTEtMzYxOTg_e61d5a0c-03da-415d-9345-a9aacc6ba293"
      unitRef="usdPerShare">26.55</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzItNi0xLTEtMzYxOTg_8575f63a-271f-4f13-b846-7438bae45177"
      unitRef="usdPerShare">8.55</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i9bba5a4e0da24eee8fe78a1ed61d8082_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzQtMi0xLTEtMzYxOTg_f5c4e92e-b97a-4b69-88fe-c33c3426b8b4"
      unitRef="usdPerShare">18.51</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="ia769a333e78142368aad724844d01ad9_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzQtNC0xLTEtMzYxOTg_78ea1ea9-86eb-404e-a942-80562b9863cb"
      unitRef="usdPerShare">12.93</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="id42b2b8786cd441ab4f99814e4e629c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzQtNi0xLTEtMzYxOTg_8519a390-b4a2-4ede-b110-bc09d20da1fd"
      unitRef="usdPerShare">5.52</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i528f094095914bb2b53b77fdc1cf04e5_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzUtMi0xLTEtMzYxOTg_cbdbcb92-e504-405c-983c-17d20786da13"
      unitRef="usdPerShare">52.91</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i42bec794c13c4ba7acb3467565058cfc_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzUtNC0xLTEtMzYxOTg_05391af4-ea5e-4831-957d-4e1917ae8302"
      unitRef="usdPerShare">55.50</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i7c7d626e2ca643048ffb47a60d526ee3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzUtNi0xLTEtMzYxOTg_dadac7fb-f150-4e90-993c-5fdd3205c928"
      unitRef="usdPerShare">19.40</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <calx:PercentOfHistoricalVolatility
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzExMjA1_ce83c2e5-a0c2-45ff-a634-c2298f115976"
      unitRef="number">0.50</calx:PercentOfHistoricalVolatility>
    <calx:PercentOfImpliedVolatility
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzExMjM0_0f8f9ed5-92bb-44e6-acba-1ad59093e4e7"
      unitRef="number">0.50</calx:PercentOfImpliedVolatility>
    <us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDk2_740f6562-5f3e-4334-87fc-1b5bd8934e73">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the weighted-average assumptions used in estimating the grant-date fair value of stock options and of each employee&#x2019;s purchase right under the ESPP in the periods indicated:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Stock Options&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Expected volatility&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;58&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;56&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;53&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Expected life (years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6.1&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6.0&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6.1&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Risk-free interest rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3.15&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1.11&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.48&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="if9248f026f6d479a9a7d8c51a9f4b8e4_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzItMi0xLTEtMzYxOTg_57b918c9-177f-4058-9683-874e22725a26"
      unitRef="number">0.58</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="i67e02cfc4d874cff8afe2659b8d50558_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzItNC0xLTEtMzYxOTg_1f92305b-094f-49fe-9452-92c898eb1d2d"
      unitRef="number">0.56</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="ia0851320733849cd9c11d5811d229fc8_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzItNi0xLTEtMzYxOTg_4297a818-8004-4e3a-bae6-94a2f2906588"
      unitRef="number">0.53</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="if9248f026f6d479a9a7d8c51a9f4b8e4_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzMtMi0xLTEtMzYxOTg_66f26228-1148-478d-9474-17d639e6fa86">P6Y1M6D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="i67e02cfc4d874cff8afe2659b8d50558_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzMtNC0xLTEtMzYxOTg_76613d3d-3b38-4eb1-8982-e8f6ac552993">P6Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="ia0851320733849cd9c11d5811d229fc8_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzMtNi0xLTEtMzYxOTg_49e470ae-887e-4bca-9c88-9e641448c6ae">P6Y1M6D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="if9248f026f6d479a9a7d8c51a9f4b8e4_D20220101-20221231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzUtMi0xLTEtMzYxOTg_1f13b0a8-a37c-4fa2-92fd-2470c3af55e4"
      unitRef="number">0.0315</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="i67e02cfc4d874cff8afe2659b8d50558_D20210101-20211231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzUtNC0xLTEtMzYxOTg_04b23f2a-6082-42d6-9bd4-3155680fbb09"
      unitRef="number">0.0111</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="ia0851320733849cd9c11d5811d229fc8_D20200101-20201231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzUtNi0xLTEtMzYxOTg_b491e98f-6dbd-4912-85fc-15844c1de967"
      unitRef="number">0.0048</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNTA4_9be2f0c7-59d2-44ec-bb1a-459a8c44c4ec">&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;ESPP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Expected volatility&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;63&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;70&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Expected life (years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.5&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.5&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.4&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Risk-free interest rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2.16&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.05&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.12&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="i9bba5a4e0da24eee8fe78a1ed61d8082_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzItMi0xLTEtMzYxOTg_d5c645a8-3cfa-4043-8ead-f412f70c9d55"
      unitRef="number">0.62</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="ia769a333e78142368aad724844d01ad9_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzItNC0xLTEtMzYxOTg_ea313239-8e3c-4376-be65-f6be2adaad34"
      unitRef="number">0.63</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="id42b2b8786cd441ab4f99814e4e629c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzItNi0xLTEtMzYxOTg_3cee71f0-1aaa-476e-8182-ee2d33aa0680"
      unitRef="number">0.70</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="i9bba5a4e0da24eee8fe78a1ed61d8082_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzMtMi0xLTEtMzYxOTg_7d72d71a-4411-4e80-9f66-77553f98db32">P0Y6M</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="ia769a333e78142368aad724844d01ad9_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzMtNC0xLTEtMzYxOTg_eefa2467-d8c4-414d-ad73-b7f88ff3ca8b">P0Y6M</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="id42b2b8786cd441ab4f99814e4e629c3_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzMtNi0xLTEtMzYxOTg_cbe9d998-b2fd-4fce-9049-f1b7f2aa3157">P0Y4M24D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="i9bba5a4e0da24eee8fe78a1ed61d8082_D20220101-20221231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzUtMi0xLTEtMzYxOTg_33215b42-2e6e-4932-9c5d-2a5154c82c61"
      unitRef="number">0.0216</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="ia769a333e78142368aad724844d01ad9_D20210101-20211231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzUtNC0xLTEtMzYxOTg_9c7d370d-521e-4a5e-88b1-f0844de14b78"
      unitRef="number">0.0005</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="id42b2b8786cd441ab4f99814e4e629c3_D20200101-20201231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzUtNi0xLTEtMzYxOTg_dedbebd5-4c00-4af2-8c8f-b63e11a9ede6"
      unitRef="number">0.0012</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ScheduleOfUnrecognizedCompensationCostNonvestedAwardsTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDY4_9038879d-bd24-45cd-9fa5-c5f585fad517">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2022, unrecognized stock-based compensation expense by award type, net of estimated forfeitures, and their expected weighted-average recognition periods are summarized in the following table (in thousands).&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:63.304%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:58.715%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:2.340%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:16.451%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:2.340%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:16.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Stock Option&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;ESPPs&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Unrecognized stock-based compensation expense&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;73,095&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,781&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Weighted-average amortization period (in years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2.3&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.8&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfUnrecognizedCompensationCostNonvestedAwardsTableTextBlock>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
      contextRef="ic1895f9b31ae4e18a52aedee0737e67e_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo2ZTk0MTU0M2Y0YmQ0MGE4OTZiNjU3YTc3MGJkYTA1ZC90YWJsZXJhbmdlOjZlOTQxNTQzZjRiZDQwYTg5NmI2NTdhNzcwYmRhMDVkXzEtMi0xLTEtMzYxOTg_e1c8fc7a-0252-4a9c-acbf-b76f74be2174"
      unitRef="usd">73095000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
      contextRef="i6b7705e9c54642b2a6c0b775486df247_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo2ZTk0MTU0M2Y0YmQ0MGE4OTZiNjU3YTc3MGJkYTA1ZC90YWJsZXJhbmdlOjZlOTQxNTQzZjRiZDQwYTg5NmI2NTdhNzcwYmRhMDVkXzEtNi0xLTEtMzYxOTg_f915ecf5-3771-4076-b5ef-705b4e783e4b"
      unitRef="usd">9781000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="if9248f026f6d479a9a7d8c51a9f4b8e4_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo2ZTk0MTU0M2Y0YmQ0MGE4OTZiNjU3YTc3MGJkYTA1ZC90YWJsZXJhbmdlOjZlOTQxNTQzZjRiZDQwYTg5NmI2NTdhNzcwYmRhMDVkXzItMi0xLTEtMzYxOTg_c1498a02-6081-4ce5-916f-ee02bb896372">P2Y3M18D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="i9bba5a4e0da24eee8fe78a1ed61d8082_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo2ZTk0MTU0M2Y0YmQ0MGE4OTZiNjU3YTc3MGJkYTA1ZC90YWJsZXJhbmdlOjZlOTQxNTQzZjRiZDQwYTg5NmI2NTdhNzcwYmRhMDVkXzItNi0xLTEtMzYxOTg_f2115b46-3716-477d-a44b-c42f31c6172b">P0Y9M18D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <calx:EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzMjY4_c3adbc88-eff9-49e3-ae0f-059bf2597f54"
      unitRef="usd">37200000</calx:EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth>
    <calx:EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzMjgw_a1737aa0-3b34-4e01-9f0c-23c46a1b2889"
      unitRef="usd">22000000</calx:EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo>
    <calx:EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzMjky_d8f20391-6a83-4b59-8998-5545c8df0bb1"
      unitRef="usd">16000000</calx:EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree>
    <calx:EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzMzA3_b991db0e-c98a-4392-9861-d4496e0da734"
      unitRef="usd">7700000</calx:EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour>
    <calx:SharesReservedForFutureIssuanceTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNTAy_fb6afd32-d88e-4467-b2aa-e5535cebb31c">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Shares Reserved for Future Issuance &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2022, the Company had common shares reserved for future issuance as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:77.631%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:82.704%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.871%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.025%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Stock options outstanding&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Shares available for future grant under 2019 Plan&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,986&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Shares available for future issuance under ESPP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,712&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Shares available for future issuance under NQ ESPP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,043&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 12.25pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;22,028&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</calx:SharesReservedForFutureIssuanceTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpiZDg5ZDcyOTgwYTY0ZWU1YTk0NTViMDIyMjRiNmNiNy90YWJsZXJhbmdlOmJkODlkNzI5ODBhNjRlZTVhOTQ1NWIwMjIyNGI2Y2I3XzItMi0xLTEtMzYxOTg_d2ac7847-67e7-444e-8536-bdff77f90ec5"
      unitRef="shares">8287000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant
      contextRef="i1c63790a858946a996ca1299276c0a06_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpiZDg5ZDcyOTgwYTY0ZWU1YTk0NTViMDIyMjRiNmNiNy90YWJsZXJhbmdlOmJkODlkNzI5ODBhNjRlZTVhOTQ1NWIwMjIyNGI2Y2I3XzMtMi0xLTEtMzYxOTg_e331859f-01c3-4c54-b213-1ca0206cd8ea"
      unitRef="shares">5986000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant>
    <us-gaap:CommonStockCapitalSharesReservedForFutureIssuance
      contextRef="i6b7705e9c54642b2a6c0b775486df247_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpiZDg5ZDcyOTgwYTY0ZWU1YTk0NTViMDIyMjRiNmNiNy90YWJsZXJhbmdlOmJkODlkNzI5ODBhNjRlZTVhOTQ1NWIwMjIyNGI2Y2I3XzQtMi0xLTEtMzYxOTg_47983090-4a50-40e5-b162-087d8bbcd775"
      unitRef="shares">4712000</us-gaap:CommonStockCapitalSharesReservedForFutureIssuance>
    <us-gaap:CommonStockCapitalSharesReservedForFutureIssuance
      contextRef="i0986e5e1ce1a47cc98bf9ebd29d80c03_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpiZDg5ZDcyOTgwYTY0ZWU1YTk0NTViMDIyMjRiNmNiNy90YWJsZXJhbmdlOmJkODlkNzI5ODBhNjRlZTVhOTQ1NWIwMjIyNGI2Y2I3XzUtMi0xLTEtMzYxOTg_51e05359-a832-4642-9827-5c42b65ac7c7"
      unitRef="shares">3043000</us-gaap:CommonStockCapitalSharesReservedForFutureIssuance>
    <us-gaap:CommonStockCapitalSharesReservedForFutureIssuance
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpiZDg5ZDcyOTgwYTY0ZWU1YTk0NTViMDIyMjRiNmNiNy90YWJsZXJhbmdlOmJkODlkNzI5ODBhNjRlZTVhOTQ1NWIwMjIyNGI2Y2I3XzYtMi0xLTEtMzYxOTg_2939935b-2e75-4071-b498-1e51211ccb10"
      unitRef="shares">22028000</us-gaap:CommonStockCapitalSharesReservedForFutureIssuance>
    <us-gaap:CompensationAndEmployeeBenefitPlansTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDkvZnJhZzphYzU4Y2VkYTQ2YzM0YTJlOWMxMzgwYjJjYjUyYWVmNS90ZXh0cmVnaW9uOmFjNThjZWRhNDZjMzRhMmU5YzEzODBiMmNiNTJhZWY1XzU3Mw_82928f65-4afe-4458-b7c0-392a8a825cc3">Employee Benefit PlanThe Company sponsors a 401(k) tax-deferred savings plan for all employees who meet certain eligibility requirements. Participants may contribute, on a pre-tax basis, a percentage of their annual compensation, but not to exceed a maximum contribution amount pursuant to Section&#160;401(k) of the Internal Revenue Code. The Company, at the discretion of the Board of Directors, may make additional matching contributions on behalf of the participants. The Company made matching contributions totaling $4.1 million, $3.2 million and $2.7 million in 2022, 2021 and 2020, respectively.</us-gaap:CompensationAndEmployeeBenefitPlansTextBlock>
    <us-gaap:DefinedContributionPlanCostRecognized
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDkvZnJhZzphYzU4Y2VkYTQ2YzM0YTJlOWMxMzgwYjJjYjUyYWVmNS90ZXh0cmVnaW9uOmFjNThjZWRhNDZjMzRhMmU5YzEzODBiMmNiNTJhZWY1XzUyNg_90b6ce73-b1ba-4247-90e6-96f32f395e35"
      unitRef="usd">4100000</us-gaap:DefinedContributionPlanCostRecognized>
    <us-gaap:DefinedContributionPlanCostRecognized
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDkvZnJhZzphYzU4Y2VkYTQ2YzM0YTJlOWMxMzgwYjJjYjUyYWVmNS90ZXh0cmVnaW9uOmFjNThjZWRhNDZjMzRhMmU5YzEzODBiMmNiNTJhZWY1XzUzMA_528a1af2-8368-408a-ab9a-35353243cc21"
      unitRef="usd">3200000</us-gaap:DefinedContributionPlanCostRecognized>
    <us-gaap:DefinedContributionPlanCostRecognized
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDkvZnJhZzphYzU4Y2VkYTQ2YzM0YTJlOWMxMzgwYjJjYjUyYWVmNS90ZXh0cmVnaW9uOmFjNThjZWRhNDZjMzRhMmU5YzEzODBiMmNiNTJhZWY1XzUzNw_57ef8fec-4e4a-47bf-8e65-66df59fa04df"
      unitRef="usd">2700000</us-gaap:DefinedContributionPlanCostRecognized>
    <us-gaap:ComprehensiveIncomeNoteTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90ZXh0cmVnaW9uOjdjMTg5MzFkZDcxODQ5NzFiMGI5YmQzOTBhYThiMDI2XzczOA_93c88a4b-747f-4a6d-aa7d-f041ec8d79cd">Accumulated Other Comprehensive Loss&lt;div style="margin-top:6pt;text-indent:4.5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The table below summarizes the changes in accumulated other comprehensive loss by component:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:80.263%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:51.905%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.710%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.561%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.803%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.654%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.803%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.564%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized Gains and Losses on Available-for-Sale Marketable Securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Foreign Currency Translation Adjustments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(191)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(191)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Other comprehensive income (loss)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(179)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;50&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(129)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(179)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(141)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(320)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Other comprehensive loss&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,521)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(632)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,153)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,700)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(773)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,473)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Assets and liabilities of the Company&#x2019;s wholly owned foreign subsidiaries are translated from their respective functional currencies at exchange rates in effect at the balance sheet date, and revenue and expenses are translated at the monthly average exchanges rates. These translations result in differences called foreign currency translation adjustments. Realized foreign currency transaction gains or losses were not significant during the years ended December&#160;31, 2022, 2021 and 2020 and are recorded in &#x201c;Other income (expense), net&#x201d; in the Company's Consolidated Statements of Comprehensive Income. Realized gains and losses on sales of available-for-sale marketable securities, if any, are reclassified from accumulated other comprehensive loss to &#x201c;Other income (expense), net&#x201d; in our Consolidated Statements of Comprehensive Income.&lt;/span&gt;&lt;/div&gt;</us-gaap:ComprehensiveIncomeNoteTextBlock>
    <us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90ZXh0cmVnaW9uOjdjMTg5MzFkZDcxODQ5NzFiMGI5YmQzOTBhYThiMDI2Xzc0MQ_12961359-0ff1-4392-b4d4-f609eb212366">&lt;div style="margin-top:6pt;text-indent:4.5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The table below summarizes the changes in accumulated other comprehensive loss by component:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:80.263%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:51.905%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.710%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.561%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.803%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.654%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.803%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.564%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized Gains and Losses on Available-for-Sale Marketable Securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Foreign Currency Translation Adjustments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(191)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(191)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Other comprehensive income (loss)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(179)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;50&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(129)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(179)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(141)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(320)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Other comprehensive loss&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,521)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(632)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,153)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,700)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(773)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,473)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock>
    <us-gaap:StockholdersEquity
      contextRef="ib254f0683dd74e86af161b45013b2484_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzMtMi0xLTEtMzYxOTg_eaff98ff-837d-4023-acff-1a52cec5a6a4"
      unitRef="usd">0</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i960b09b6825f4607b4d06a80a878fbdb_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzMtNC0xLTEtMzYxOTg_2c6b0282-f8a5-4799-ae3e-1695b52384f2"
      unitRef="usd">-191000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i70828112df2e4dc0aacf44aeade1a12c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzMtNi0xLTEtMzYxOTg_43a360c3-0f92-4427-b0e1-d71e78822128"
      unitRef="usd">-191000</us-gaap:StockholdersEquity>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i0735e262a99c4c5789bcfd438e2a271f_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzQtMi0xLTEtMzYxOTg_2eb3c012-1cc3-4f9a-8160-0a9b2f82031b"
      unitRef="usd">-179000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="if64a3a711a7c4298ad36afd715aa0bb7_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzQtNC0xLTEtMzYxOTg_9840535f-409b-4d34-aa8d-83d767e903ea"
      unitRef="usd">50000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzQtNi0xLTEtMzYxOTg_05d0da48-6523-4f28-9cea-5ce374095b0b"
      unitRef="usd">-129000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:StockholdersEquity
      contextRef="ief77c956212749c98a1e47bc2259eed1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzUtMi0xLTEtMzYxOTg_50dd8804-e250-4ac7-9056-ac04dc317d7c"
      unitRef="usd">-179000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ia6a7a2e1b59f47d885453b2b96588acc_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzUtNC0xLTEtMzYxOTg_f008578b-6c03-4b2c-a6cb-157865b4296d"
      unitRef="usd">-141000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i7b351fe8ba1143289315d78b03323c97_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzUtNi0xLTEtMzYxOTg_1a61f658-28ce-48a0-94d5-b1abea66844c"
      unitRef="usd">-320000</us-gaap:StockholdersEquity>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i12575da023634f6cb1d81df6e92df5a7_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzYtMi0xLTEtMzYxOTg_3220f09e-72ea-490d-8299-3fb5213c3f8c"
      unitRef="usd">-1521000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i388a82dc33064d18880924884eb0f3c6_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzYtNC0xLTEtMzYxOTg_947aafc0-ea07-4d05-8ede-22bdf36260d1"
      unitRef="usd">-632000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzYtNi0xLTEtMzYxOTg_d3b7cb07-e0c4-485a-9c42-fc1510b8de41"
      unitRef="usd">-2153000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:StockholdersEquity
      contextRef="ia3ff94b23a2c4e91a27bf12f2f3e6231_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzctMi0xLTEtMzYxOTg_61984890-f518-420c-b44a-4806f098dff8"
      unitRef="usd">-1700000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ic9b55f5c1eeb41c79688d7363a1baa49_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzctNC0xLTEtMzYxOTg_aa65ca89-de0b-4aeb-aab1-4dbb6664d84f"
      unitRef="usd">-773000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i94330ed0d9cb44ad89b11f0416a40439_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzctNi0xLTEtMzYxOTg_49c64e66-193d-4285-a26b-b2b2dc839aaf"
      unitRef="usd">-2473000</us-gaap:StockholdersEquity>
    <us-gaap:IncomeTaxDisclosureTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzQzMjA_97b86f68-b9f6-4e0f-a927-22ffe4829c54">Income Taxes &lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The domestic and foreign components of income before incomes taxes were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Domestic&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;51,442&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;70,776&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;33,777&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Foreign&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,600&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,878&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;507&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;54,042&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;72,654&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;34,284&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="text-indent:18pt"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-indent:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Income taxes consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Current:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Federal&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,671&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;State&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,818&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;285&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Foreign&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;874&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;438&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;507&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Current income tax&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;11,100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,256&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;792&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Federal&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,336&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(157,355)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;State&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4,372)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(11,631)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Foreign&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(32)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred income tax&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,932&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(168,980)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 37pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,032&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(165,724)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;800&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The differences between the statutory and effective tax rates, expressed as a percentage of net income before income taxes, were as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Federal statutory rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21.0&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21.0&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21.0&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Impact of state taxes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1.4&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(15.6)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Foreign operations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(0.2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;R&amp;amp;D tax credits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(7.4)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1.4&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4.8)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Foreign income inclusion&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1.0&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Stock-based compensation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(12.8)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4.1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Other permanent items&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(0.2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(0.3)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Tax true-up&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(0.2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(0.4)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Valuation allowance&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4.0)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(208.3)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(48.1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Net operating loss expiration / attribute expiration&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5.5&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(13.1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;37.4&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Base erosion anti-abuse tax&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6.8&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;24.1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(228.1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2.3&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The significant components of the Company&#x2019;s deferred tax assets were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.888%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.610%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.235%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred tax assets:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Net operating loss carryforwards&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;44,189&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;82,672&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Tax credit carryforwards&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;56,717&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;52,538&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Accruals and reserves&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;11,679&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;10,302&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred revenue&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,156&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;11,351&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Stock-based compensation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,417&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,921&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Capitalized R&amp;amp;D&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;67,932&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;38,842&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Gross deferred tax assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;201,090&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;200,626&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Valuation allowance&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(29,914)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(29,236)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total deferred tax assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;171,176&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;171,390&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred tax liabilities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Fixed assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,648)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,511)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Intangible assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,497)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(917)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total deferred tax liabilities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4,145)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,428)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 25.75pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;167,031&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;168,962&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:1pt"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;All deferred taxes, along with any related valuation allowance, are classified in the Consolidated Balance Sheet as long-term.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A valuation allowance is required when, based upon an assessment of various factors, including recent operating loss history, anticipated future earnings, and prudent and reasonable tax planning strategies, it is more likely than not that some portion of the deferred tax assets will not be realized. At each reporting period, the Company assesses the estimated future realizability of the gross carrying value of its deferred tax assets. The Company&#x2019;s periodic assessments take into consideration both positive evidence (future profitability projections for example and recent financial performance) and negative evidence (historical financial performance for example) as it relates to evaluating the future recoverability of its deferred tax assets. During 2021, the Company released its valuation allowance for federal and state (with the exception of California) deferred tax assets that are more likely than not to be realized, primarily as a result of actual and projected increases in U.S. profitability in the current and future periods. In performing its analysis, the Company used the most updated plans and estimates that it currently uses to manage the underlying business and calculated the ability to utilize its deferred tax assets. The valuation allowance increased by $0.7&#160;million from 2021 to 2022. The Company continues to maintain a valuation allowance of $29.9&#160;million on certain U.S. federal and state deferred tax assets that the Company believes are not more likely than not to be realized in future periods.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2022, the Company had U.S. federal and state net operating losses of approximately $205.2&#160;million and $24.0&#160;million, respectively. The U.S. federal net operating loss carryforwards will expire at various dates through 2039 if not utilized. The state net operating loss carryforwards will expire at various dates through 2039 if not utilized. Additionally, the Company has U.S. federal, California and other U.S. states research and development credits of approximately $40.7&#160;million, $47.0&#160;million and $2.7&#160;million as of December&#160;31, 2022, respectively. The U.S. federal research and development credits have begun to expire in 2022 and will continue to expire at various dates through 2042. The California research and development credits have no expiration date. The credits related to other various U.S. states have begun to expire and will continue to expire at various dates through 2036.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Uncertain Tax Positions&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;ASC 740, &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;&#x201c;Income Taxes,&#x201d;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; prescribes a recognition threshold and measurement attribute to the financial statement recognition and measurement of a tax position taken or expected to be taken in a tax return. The guidance also provides guidance on derecognition, classification, accounting in interim periods and disclosure requirements for uncertain tax positions. The standard requires the Company to recognize the financial statement effects of an uncertain tax position when it is more likely than not that such position will be sustained upon audit. The Company recognizes accrued interest and penalties related to unrecognized tax benefits as interest expense and income tax expense, respectively, in its Consolidated Statements of Comprehensive Income.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table reconciles the Company&#x2019;s unrecognized tax benefits (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.888%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.610%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.235%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance at beginning of year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;25,992&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,516&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;Reduction for tax positions related to prior year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(905)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,427)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;Additions for tax positions related to prior year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,232&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,947&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;Additions for tax positions related to current year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,896&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,956&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance at end of year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;29,215&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;25,992&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2022 and 2021, the Company had unrecognized tax benefits of $29.2&#160;million and $26.0&#160;million, respectively, $15.3&#160;million of which would affect the Company&#x2019;s effective tax rate if recognized. There were no accrued interest or penalties for uncertain income tax as of December&#160;31, 2022.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company files tax returns in the United States and various state jurisdictions, China, India and the United Kingdom. The tax years 2000 through 2021 remain open and subject to examination by the appropriate governmental agencies due to tax attribute carryforwards.&lt;/span&gt;&lt;/div&gt;</us-gaap:IncomeTaxDisclosureTextBlock>
    <us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzQzMjU_cabe52d2-f5f9-4d22-8023-2ddf8b873e66">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The domestic and foreign components of income before incomes taxes were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Domestic&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;51,442&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;70,776&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;33,777&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Foreign&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,600&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,878&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;507&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;54,042&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;72,654&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;34,284&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzItMi0xLTEtMzYxOTg_dc0ca780-f4e2-469e-b4aa-94aa285f418c"
      unitRef="usd">51442000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzItNC0xLTEtMzYxOTg_ea59f2f3-78d8-4aab-a56e-d9e80bb53830"
      unitRef="usd">70776000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzItNi0xLTEtMzYxOTg_806b3a7f-9dae-4f08-8867-eb71bb382b92"
      unitRef="usd">33777000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzMtMi0xLTEtMzYxOTg_50fd12e0-79da-465e-a95d-face0431eaeb"
      unitRef="usd">2600000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzMtNC0xLTEtMzYxOTg_a54e0dae-281f-40ce-91c3-e2a30e85e860"
      unitRef="usd">1878000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzMtNi0xLTEtMzYxOTg_7705947f-e75b-4d2b-9b75-c69d6e6ff7e3"
      unitRef="usd">507000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzQtMi0xLTEtMzYxOTg_d3133df9-b25c-4ec1-b68b-2d334b741201"
      unitRef="usd">54042000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzQtNC0xLTEtMzYxOTg_21aeabca-1568-4c32-950e-8f3ec203feaa"
      unitRef="usd">72654000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzQtNi0xLTEtMzYxOTg_9f3ad745-1992-4bde-a4ce-cafe8383a034"
      unitRef="usd">34284000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzQzMTY_fac6c147-2743-4428-bf4c-1f90aeed145b">&lt;div style="margin-top:9pt;text-indent:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Income taxes consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Current:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Federal&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,671&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;State&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,818&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;285&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Foreign&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;874&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;438&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;507&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Current income tax&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;11,100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,256&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;792&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Federal&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,336&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(157,355)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;State&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4,372)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(11,631)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Foreign&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(32)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred income tax&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,932&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(168,980)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 37pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,032&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(165,724)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;800&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzMtMi0xLTEtNDEwODA_9cb92e99-5dd1-4c7d-a1e1-e945b254ba1b"
      unitRef="usd">3671000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzMtNC0xLTEtNDEwODA_9d2b04bd-9994-4dac-b49f-1fc0266e781e"
      unitRef="usd">0</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzMtNi0xLTEtNDEwODA_f26d5b28-2638-4523-9b61-0f8e157129cf"
      unitRef="usd">0</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzMtMi0xLTEtMzYxOTg_cce07ec3-bf1c-46f0-9ee8-ab7eafa5470a"
      unitRef="usd">6555000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzMtNC0xLTEtMzYxOTg_62abea2d-d3e4-481f-96cb-0b82bfacaae4"
      unitRef="usd">2818000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzMtNi0xLTEtMzYxOTg_05e8b661-505f-405a-967c-2903f1d487eb"
      unitRef="usd">285000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzQtMi0xLTEtMzYxOTg_20214784-c571-4ac5-b3c6-4abf6d75c2fd"
      unitRef="usd">874000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzQtNC0xLTEtMzYxOTg_4436e76c-c31e-425c-b65a-a0049a47a3cd"
      unitRef="usd">438000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzQtNi0xLTEtMzYxOTg_7ec5cf3b-bfe9-4462-bff3-b61dc0480a43"
      unitRef="usd">507000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzUtMi0xLTEtMzYxOTg_e0230373-fbaa-4dbb-b390-86bd6bd1b43c"
      unitRef="usd">11100000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzUtNC0xLTEtMzYxOTg_96ca0dc9-06f5-42be-9b62-5108e70115d3"
      unitRef="usd">3256000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzUtNi0xLTEtMzYxOTg_ca777584-0ff9-4d4e-a549-1555de13e396"
      unitRef="usd">792000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzctMi0xLTEtMzYxOTg_f873b7be-1d08-4d71-b4a8-ba79954269de"
      unitRef="usd">6336000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzctNC0xLTEtMzYxOTg_9d28cb84-ce2d-419a-a499-b7e35338fe9a"
      unitRef="usd">-157355000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzctNi0xLTEtMzYxOTg_d9844223-e25a-4ea2-b7cf-a03431da56ab"
      unitRef="usd">0</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzgtMi0xLTEtMzYxOTg_395512fd-34f0-401b-aa7a-698426eaaf64"
      unitRef="usd">-4372000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzgtNC0xLTEtMzYxOTg_45582e88-e09b-4e69-b7fe-2ed414cc8d58"
      unitRef="usd">-11631000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzgtNi0xLTEtMzYxOTg_8313dd63-1af4-4b3f-a0fe-648da3b76c17"
      unitRef="usd">0</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzktMi0xLTEtMzYxOTg_6cadf060-4e2e-437c-949a-36fec1d6189c"
      unitRef="usd">-32000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzktNC0xLTEtMzYxOTg_3285d07a-4153-4674-89e0-0a263907002f"
      unitRef="usd">6000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzktNi0xLTEtMzYxOTg_77bde7d6-0e87-42bc-b5d6-b61fcb72858d"
      unitRef="usd">8000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzEwLTItMS0xLTM2MTk4_e6692c3f-69f0-457f-8d53-260e22f2d8f2"
      unitRef="usd">1932000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzEwLTQtMS0xLTM2MTk4_f044dd8b-cb87-4565-95ad-8b683dff1a65"
      unitRef="usd">-168980000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzEwLTYtMS0xLTM2MTk4_2b2db676-9c3e-45b9-8e85-2aa71e3ba3a2"
      unitRef="usd">8000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzExLTItMS0xLTM2MTk4_e273ccdb-653e-4102-8729-eeb3de7f5ee4"
      unitRef="usd">13032000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzExLTQtMS0xLTM2MTk4_a2c1ebdb-dc6a-4285-99d2-153e24a29059"
      unitRef="usd">-165724000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzExLTYtMS0xLTM2MTk4_d8975609-f3d0-4539-adaa-33e29a41a8f1"
      unitRef="usd">800000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzQzMDA_f6fa31da-ccd7-46d7-9ef2-7c91848a6377">&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The differences between the statutory and effective tax rates, expressed as a percentage of net income before income taxes, were as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Federal statutory rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21.0&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21.0&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21.0&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Impact of state taxes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1.4&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(15.6)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Foreign operations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(0.2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;R&amp;amp;D tax credits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(7.4)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1.4&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4.8)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Foreign income inclusion&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1.0&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Stock-based compensation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(12.8)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4.1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Other permanent items&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(0.2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(0.3)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Tax true-up&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(0.2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(0.4)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Valuation allowance&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4.0)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(208.3)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(48.1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Net operating loss expiration / attribute expiration&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5.5&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(13.1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;37.4&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Base erosion anti-abuse tax&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6.8&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;24.1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(228.1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2.3&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzItMi0xLTEtMzYxOTg_703dedc2-464a-422e-ab25-21cdab6a0474"
      unitRef="number">0.210</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzItNC0xLTEtMzYxOTg_cad423ad-ea43-490d-8b4d-4934b7a7c38c"
      unitRef="number">0.210</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzItNi0xLTEtMzYxOTg_4ab33594-368d-4473-b480-5b609124954e"
      unitRef="number">0.210</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzMtMi0xLTEtMzYxOTg_04504c9d-54d1-46d6-827a-e3a84e07a407"
      unitRef="number">0.014</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzMtNC0xLTEtMzYxOTg_dc132db8-147b-4001-8774-0f4229d4c58a"
      unitRef="number">-0.156</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzMtNi0xLTEtMzYxOTg_12876404-484e-4d62-ac07-28a1db3d9d5b"
      unitRef="number">0.001</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzQtMi0xLTEtMzYxOTg_9a9addb5-b021-449a-8cd8-b6b1b7ded2c1"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzQtNC0xLTEtMzYxOTg_c3b5b15c-3260-4d0c-aca8-2bf36eba5f34"
      unitRef="number">-0.002</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzQtNi0xLTEtMzYxOTg_0addd5ef-a550-4e51-8a27-4aff60f9f179"
      unitRef="number">0.006</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzUtMi0xLTEtMzYxOTg_675b8848-7cce-4daa-a771-69225346e013"
      unitRef="number">0.074</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzUtNC0xLTEtMzYxOTg_5bce7984-14e8-40f2-abb2-49ed53b03c30"
      unitRef="number">0.014</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzUtNi0xLTEtMzYxOTg_12aaaf35-afd7-4474-a86d-4afdabdb0de2"
      unitRef="number">0.048</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch>
    <us-gaap:EffectiveIncomeTaxRateReconciliationFdiiPercent
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzYtMi0xLTEtMzYxOTg_9369a1f2-5f1c-4d18-8f8e-9ba226d05c6c"
      unitRef="number">0.010</us-gaap:EffectiveIncomeTaxRateReconciliationFdiiPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationFdiiPercent
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzYtNC0xLTEtMzYxOTg_fc7993f7-e014-429f-b4a2-7a62989839cc"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationFdiiPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationFdiiPercent
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzYtNi0xLTEtMzYxOTg_eafba1dd-3522-4955-94a6-98e7db34d578"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationFdiiPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzctMi0xLTEtMzYxOTg_e63c6e2f-c7a4-459a-977a-3218f917f17a"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzctNC0xLTEtMzYxOTg_10eb83b0-4ebb-4ba2-ba80-6f304aa3d3e0"
      unitRef="number">-0.128</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzctNi0xLTEtMzYxOTg_b5719cf9-2cd7-4aec-84a2-394f46e27e93"
      unitRef="number">-0.041</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzgtMi0xLTEtMzYxOTg_c91f46ec-bb4e-439e-a592-31ec1abc1b66"
      unitRef="number">-0.002</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzgtNC0xLTEtMzYxOTg_a6cbe6d7-714e-473c-9a24-f1a3c9eca31a"
      unitRef="number">-0.003</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzgtNi0xLTEtMzYxOTg_52e3fd5e-9e76-47c0-b5eb-5dc3b35a8b4d"
      unitRef="number">0.006</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther>
    <us-gaap:EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzktMi0xLTEtMzYxOTg_ae194d89-b56b-4c80-9cbe-002a8f3a4ca4"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzktNC0xLTEtMzYxOTg_2c2a7c78-7ec6-4017-a959-d0aa5c20ba2a"
      unitRef="number">-0.002</us-gaap:EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzktNi0xLTEtMzYxOTg_a77c0604-11c0-431c-a905-230ef442e889"
      unitRef="number">-0.004</us-gaap:EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEwLTItMS0xLTM2MTk4_d2986867-a39d-40a4-a6df-42e047738344"
      unitRef="number">-0.040</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEwLTQtMS0xLTM2MTk4_2c7add6f-12a4-48a4-97e4-9e4ce9fe7960"
      unitRef="number">-2.083</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEwLTYtMS0xLTM2MTk4_2f54bd32-b198-4c1b-85b9-b0e538b80bb9"
      unitRef="number">-0.481</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <calx:EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzExLTItMS0xLTQwNTA2_22ebf4e0-2a1b-4557-9e71-a8ea3f739258"
      unitRef="number">0.055</calx:EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss>
    <calx:EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzExLTQtMS0xLTQwNTA2_d8d491a6-5a85-41e4-9f5c-086055dcf3c2"
      unitRef="number">-0.131</calx:EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss>
    <calx:EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzExLTYtMS0xLTQwNTA2_7368811b-2e60-4f5b-babd-024bafa6e5c1"
      unitRef="number">0.374</calx:EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss>
    <us-gaap:EffectiveIncomeTaxRateReconciliationBeatPercent
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEyLTItMS0xLTQwNTA2_750e0f67-d7e0-4d66-8ee7-5015584b16cf"
      unitRef="number">0.068</us-gaap:EffectiveIncomeTaxRateReconciliationBeatPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationBeatPercent
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEyLTQtMS0xLTQwNTA2_e4d70053-cb0a-4b38-ba1b-67271c78b685"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationBeatPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationBeatPercent
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEyLTYtMS0xLTQwNTA2_b60671d3-dc29-4ee4-8d78-9c38d3e29d11"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationBeatPercent>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEyLTItMS0xLTM2MTk4_52466b4e-ed4a-497d-8676-c19888eb5ead"
      unitRef="number">0.241</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEyLTQtMS0xLTM2MTk4_748c92db-ba73-49dc-8484-5c1b5e1bb680"
      unitRef="number">-2.281</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEyLTYtMS0xLTM2MTk4_84a0c668-da5d-4771-90e3-0cfb9e0b694c"
      unitRef="number">0.023</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzQzMDQ_c2cd9063-6e22-4dc8-9208-b1974b03211a">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The significant components of the Company&#x2019;s deferred tax assets were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.888%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.610%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.235%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred tax assets:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Net operating loss carryforwards&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;44,189&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;82,672&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Tax credit carryforwards&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;56,717&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;52,538&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Accruals and reserves&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;11,679&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;10,302&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred revenue&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,156&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;11,351&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Stock-based compensation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,417&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,921&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Capitalized R&amp;amp;D&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;67,932&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;38,842&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Gross deferred tax assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;201,090&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;200,626&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Valuation allowance&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(29,914)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(29,236)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total deferred tax assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;171,176&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;171,390&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred tax liabilities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Fixed assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,648)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,511)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Intangible assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,497)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(917)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total deferred tax liabilities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4,145)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,428)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 25.75pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;167,031&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;168,962&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwards
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzMtMi0xLTEtMzYxOTg_40796e34-0619-48f2-a5ff-7e9b570a4093"
      unitRef="usd">44189000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwards>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwards
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzMtNC0xLTEtMzYxOTg_4957892c-3188-48dd-b126-5a67d71062cb"
      unitRef="usd">82672000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwards>
    <us-gaap:TaxCreditCarryforwardAmount
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzQtMi0xLTEtMzYxOTg_ee6b6c4a-9a16-46f6-aeaa-b0b4531d4bde"
      unitRef="usd">56717000</us-gaap:TaxCreditCarryforwardAmount>
    <us-gaap:TaxCreditCarryforwardAmount
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzQtNC0xLTEtMzYxOTg_fc5f7c9f-ba25-4ab7-923d-7125a6979bfc"
      unitRef="usd">52538000</us-gaap:TaxCreditCarryforwardAmount>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzYtMi0xLTEtMzYxOTg_50e4deea-33d3-4ce2-92ad-d2f14dce8ee7"
      unitRef="usd">11679000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzYtNC0xLTEtMzYxOTg_513a5c48-317f-4d02-9926-7e963b77d743"
      unitRef="usd">10302000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities>
    <us-gaap:DeferredTaxAssetsDeferredIncome
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzctMi0xLTEtMzYxOTg_126fbf36-3d9d-469e-96ba-ae83a3c9f61d"
      unitRef="usd">13156000</us-gaap:DeferredTaxAssetsDeferredIncome>
    <us-gaap:DeferredTaxAssetsDeferredIncome
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzctNC0xLTEtMzYxOTg_58afa9f3-db1f-42ee-aee8-df37b4de1056"
      unitRef="usd">11351000</us-gaap:DeferredTaxAssetsDeferredIncome>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzgtMi0xLTEtMzYxOTg_9225deb8-73f4-4377-9ed5-72f4098ce3e4"
      unitRef="usd">7417000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzgtNC0xLTEtMzYxOTg_e2670c2c-4806-4a16-a9f9-a8021c7b871d"
      unitRef="usd">4921000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost>
    <calx:DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzktMi0xLTEtMzYxOTg_97bc2911-3916-47ab-b2d8-a23f6c820822"
      unitRef="usd">67932000</calx:DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts>
    <calx:DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzktNC0xLTEtMzYxOTg_41d2f5c6-1cee-4612-bc06-bb20bf96bcb7"
      unitRef="usd">38842000</calx:DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts>
    <us-gaap:DeferredTaxAssetsGross
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzExLTItMS0xLTM2MTk4_0650445a-f8cc-4b35-b3aa-21d30996e144"
      unitRef="usd">201090000</us-gaap:DeferredTaxAssetsGross>
    <us-gaap:DeferredTaxAssetsGross
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzExLTQtMS0xLTM2MTk4_a2bfb597-30d4-4261-9a38-37b9a8ac694e"
      unitRef="usd">200626000</us-gaap:DeferredTaxAssetsGross>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzEyLTItMS0xLTM2MTk4_2edd159c-3d42-4733-b165-f302c8599e47"
      unitRef="usd">29914000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzEyLTQtMS0xLTM2MTk4_e07f96f5-7db8-4174-8270-0bed13ae4fe4"
      unitRef="usd">29236000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsNet
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzEzLTItMS0xLTM2MTk4_cd4241fa-ff9e-4297-9e2e-b36123828f5c"
      unitRef="usd">171176000</us-gaap:DeferredTaxAssetsNet>
    <us-gaap:DeferredTaxAssetsNet
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzEzLTQtMS0xLTM2MTk4_ac42e8a4-3803-4c43-9607-e14f2eec45d2"
      unitRef="usd">171390000</us-gaap:DeferredTaxAssetsNet>
    <us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE1LTItMS0xLTM2MTk4_57674df4-b4e4-48e2-abbf-ebb6826431a1"
      unitRef="usd">2648000</us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment>
    <us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE1LTQtMS0xLTM2MTk4_e7190cf5-49d2-4767-b500-86d24c225c91"
      unitRef="usd">1511000</us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment>
    <us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE3LTItMS0xLTQwODcz_3f623930-c87e-4f35-aa3c-b108c7ee8c15"
      unitRef="usd">1497000</us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets>
    <us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE3LTQtMS0xLTQwODcz_0af872c8-9e8f-4a42-815f-132cd70e695c"
      unitRef="usd">917000</us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE4LTItMS0xLTQxMDkz_aa58f001-2b38-4441-873e-3ec605b0a039"
      unitRef="usd">4145000</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE4LTQtMS0xLTQxMDkz_def451a5-ce12-43bc-a648-e0376e6441b9"
      unitRef="usd">2428000</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:DeferredTaxAssetsLiabilitiesNet
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE5LTItMS0xLTQxMDkz_1d95a8fc-ca2b-4943-88f5-bb146cf7cac6"
      unitRef="usd">167031000</us-gaap:DeferredTaxAssetsLiabilitiesNet>
    <us-gaap:DeferredTaxAssetsLiabilitiesNet
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE5LTQtMS0xLTQxMDkz_59f90680-5b5c-4230-aa3b-e25f2adc3f1a"
      unitRef="usd">168962000</us-gaap:DeferredTaxAssetsLiabilitiesNet>
    <us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzQzOTgwNDY1MjQ4NzM_6df00d2c-af4c-49cd-8ca3-010805cf3c79"
      unitRef="usd">700000</us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzE5MTA_8b21b654-aa3b-4bc2-b066-3490ae9d0935"
      unitRef="usd">29900000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:OperatingLossCarryforwards
      contextRef="icd96ce43bdbe4439a3f6e14fdc5c6b75_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzIxNDM_4a7e56ba-6429-4cbd-a3d8-9ebb755bacc4"
      unitRef="usd">205200000</us-gaap:OperatingLossCarryforwards>
    <us-gaap:OperatingLossCarryforwards
      contextRef="i7b419d352d354ed585a00db42c0dc4a8_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzIxNTA_99a8d2a2-cd31-4bab-948f-6b60d5f2862d"
      unitRef="usd">24000000</us-gaap:OperatingLossCarryforwards>
    <us-gaap:TaxCreditCarryforwardAmount
      contextRef="icd96ce43bdbe4439a3f6e14fdc5c6b75_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzI1ODA_fc007d71-c507-41df-a898-16903cd109fa"
      unitRef="usd">40700000</us-gaap:TaxCreditCarryforwardAmount>
    <us-gaap:TaxCreditCarryforwardAmount
      contextRef="ifb0a61fc15ad461aae58a57e0493b921_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzI1ODQ_e215c6c3-cf31-414d-b4fb-bfd4faa04c01"
      unitRef="usd">47000000</us-gaap:TaxCreditCarryforwardAmount>
    <us-gaap:TaxCreditCarryforwardAmount
      contextRef="i0e5bdc2854004c18b26a2bdaaed61080_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzI1OTE_12e3d10b-0623-4acd-9dd4-0743cf417fc2"
      unitRef="usd">2700000</us-gaap:TaxCreditCarryforwardAmount>
    <us-gaap:SummaryOfIncomeTaxContingenciesTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzQzMTk_4130322d-713e-4368-bd48-3053d4445014">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table reconciles the Company&#x2019;s unrecognized tax benefits (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.888%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.610%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.235%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance at beginning of year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;25,992&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,516&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;Reduction for tax positions related to prior year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(905)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,427)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;Additions for tax positions related to prior year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,232&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,947&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;Additions for tax positions related to current year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,896&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,956&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance at end of year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;29,215&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;25,992&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:SummaryOfIncomeTaxContingenciesTextBlock>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzItMi0xLTEtMzYxOTg_04cdffa6-d154-4c0c-a240-5e53484ea5ad"
      unitRef="usd">25992000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i5647c99c6e924e9681658be971eaeb0b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzItNC0xLTEtMzYxOTg_1aecbef5-e781-402c-991e-e44ee5a5015e"
      unitRef="usd">23516000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzMtMi0xLTEtMzYxOTg_fa17c355-8347-45f4-932a-3976affe0aa8"
      unitRef="usd">905000</us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzMtNC0xLTEtMzYxOTg_6d84cdeb-1a17-47b4-8395-3535d2bd81d8"
      unitRef="usd">1427000</us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzQtMi0xLTEtMzYxOTg_6340c7a0-bd74-44b8-a18f-f98af8b0ff30"
      unitRef="usd">1232000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzQtNC0xLTEtMzYxOTg_c918e241-e05f-41e1-bf60-4a83e7a8a182"
      unitRef="usd">1947000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzUtMi0xLTEtMzYxOTg_9c979d35-1289-4b1a-b8fc-ed9af7401a9b"
      unitRef="usd">2896000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzUtNC0xLTEtMzYxOTg_f91c056a-b743-4ed0-85b8-7848c636615e"
      unitRef="usd">1956000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzYtMi0xLTEtMzYxOTg_8003d912-d62a-4aaf-ad71-5c40c7af2f44"
      unitRef="usd">29215000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzYtNC0xLTEtMzYxOTg_b8bf2479-1440-444e-b08c-a926ea09f441"
      unitRef="usd">25992000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzM4NDQ_b615fb7a-9380-494d-a1ed-3b17d374b4f8"
      unitRef="usd">29200000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzM4NTE_5e7ee82b-4b8c-4036-bca4-b48d3a2041d9"
      unitRef="usd">26000000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzEwOTk1MTE2MzIxMTc_ad47d719-1da2-4684-9b1d-3270f0038679"
      unitRef="usd">15300000</us-gaap:UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate>
    <us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzM5NjQ_91991360-083e-4866-810c-1e28f55e901b"
      unitRef="usd">0</us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued>
    <us-gaap:EarningsPerShareTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90ZXh0cmVnaW9uOjk1MzIwYTQ5YmY4YTRkZWVhZTY4NzQwMzg2ODJiMjljXzg3MQ_9454b802-3e1d-4ba2-9a56-f8e6e8140139">Net Income Per Common Share&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table sets forth the computation of basic and diluted net income per common share for the periods indicated (in thousands, except per share data):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Numerator:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Net income&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;41,010&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;238,378&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;33,484&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Denominator:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Weighted-average common shares &#x2014; basic&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;65,058&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;63,277&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;59,074&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Effect of dilutive potential common shares&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,853&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,579&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,924&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Weighted-average common shares &#x2014; diluted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;68,911&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;67,856&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;61,998&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr style="height:9pt"&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Basic net income per common share&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.63&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3.77&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.57&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Diluted net income per common share&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.60&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3.51&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.54&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Potentially dilutive shares excluded, weighted-average&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,758&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,006&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;753&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Unvested restricted stock awards are included in the calculation of basic weighted-average shares because such shares are participating securities; however, the impact was immaterial.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Potentially dilutive shares have been excluded from the computation of diluted net income per common share when their effect is antidilutive. These antidilutive shares were primarily from stock options.&lt;/span&gt;&lt;/div&gt;</us-gaap:EarningsPerShareTextBlock>
    <us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90ZXh0cmVnaW9uOjk1MzIwYTQ5YmY4YTRkZWVhZTY4NzQwMzg2ODJiMjljXzg2Mg_9d07664d-b283-4541-b25f-5785d2d0824d">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table sets forth the computation of basic and diluted net income per common share for the periods indicated (in thousands, except per share data):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Numerator:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Net income&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;41,010&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;238,378&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;33,484&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Denominator:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Weighted-average common shares &#x2014; basic&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;65,058&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;63,277&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;59,074&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Effect of dilutive potential common shares&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,853&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,579&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,924&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Weighted-average common shares &#x2014; diluted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;68,911&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;67,856&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;61,998&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr style="height:9pt"&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Basic net income per common share&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.63&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3.77&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.57&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Diluted net income per common share&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.60&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3.51&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.54&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Potentially dilutive shares excluded, weighted-average&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,758&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,006&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;753&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock>
    <us-gaap:NetIncomeLoss
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzMtMi0xLTEtMzYxOTg_54959cdc-06ac-413e-afc4-4ee7c5a2ccb6"
      unitRef="usd">41010000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzMtNC0xLTEtMzYxOTg_73a5c360-5842-41ba-bae7-9a72d9693a78"
      unitRef="usd">238378000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzMtNi0xLTEtMzYxOTg_0a246ff7-c089-4a24-9b7d-e9eee9520497"
      unitRef="usd">33484000</us-gaap:NetIncomeLoss>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzUtMi0xLTEtMzYxOTg_c883f4cd-d316-4667-a423-d97948538d41"
      unitRef="shares">65058000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzUtNC0xLTEtMzYxOTg_96eb1476-d398-4248-a651-1c52088df4ca"
      unitRef="shares">63277000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzUtNi0xLTEtMzYxOTg_ce6ac25b-d28a-4bd9-bcbb-78a14c5c30af"
      unitRef="shares">59074000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzYtMi0xLTEtMzYxOTg_0b314580-8e7c-467d-915f-e084aa3ce5b3"
      unitRef="shares">3853000</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzYtNC0xLTEtMzYxOTg_0a3fe510-aae8-4a4a-8d66-1bab0519f432"
      unitRef="shares">4579000</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzYtNi0xLTEtMzYxOTg_07e5df62-b437-4b5b-b7da-c119cd6ff537"
      unitRef="shares">2924000</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzctMi0xLTEtMzYxOTg_eecbd2f6-bb4d-49a2-9685-c6d111b25362"
      unitRef="shares">68911000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzctNC0xLTEtMzYxOTg_e723254e-d815-4edd-a5f7-c3336b62c1d3"
      unitRef="shares">67856000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzctNi0xLTEtMzYxOTg_7d7b0e79-8096-42ff-bc8b-abe55934f938"
      unitRef="shares">61998000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:EarningsPerShareBasic
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzktMi0xLTEtMzYxOTg_6e7391b4-f2a4-4342-afe0-331781f15fd0"
      unitRef="usdPerShare">0.63</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzktNC0xLTEtMzYxOTg_0d567e08-800d-40bb-bf29-19ce9e6b7afb"
      unitRef="usdPerShare">3.77</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzktNi0xLTEtMzYxOTg_352d1867-9b81-401b-a061-cf357f4b5734"
      unitRef="usdPerShare">0.57</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzEwLTItMS0xLTM2MTk4_77eee169-386e-4f75-a559-08e2b0a915d5"
      unitRef="usdPerShare">0.60</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzEwLTQtMS0xLTM2MTk4_5e08e1d1-10a8-43a6-b795-be6b55f5cd23"
      unitRef="usdPerShare">3.51</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzEwLTYtMS0xLTM2MTk4_83bdc70e-7a59-40eb-9fce-65d9885ff0ed"
      unitRef="usdPerShare">0.54</us-gaap:EarningsPerShareDiluted>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzExLTItMS0xLTM2MTk4_7e217187-94dd-4c71-997d-843034ab54fa"
      unitRef="shares">1758000</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzExLTQtMS0xLTM2MTk4_f199b3e7-98da-45b6-bbf5-ff9c6f3b85f6"
      unitRef="shares">1006000</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzExLTYtMS0xLTM2MTk4_0dafc38e-5b79-4609-93ff-5aba1b247b58"
      unitRef="shares">753000</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:SegmentReportingDisclosureTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzMyNTk_e80f5514-ade2-4c4d-9409-abb8e7caeb53">Revenue from Contracts with CustomersThe Company develops, markets and sells a broadband platform and managed services, and there are no segment managers who are held accountable for operations, operating results and plans for levels or components below the Company unit level. Accordingly, the Company is considered to be in a single reporting segment and operating unit structure. The Company&#x2019;s chief operating decision maker is the Company&#x2019;s Chief Executive Officer, who reviews financial information presented on a Company-wide basis, for purposes of allocating resources and evaluating financial performance.&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Geographic Information:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following is a summary of revenue disaggregated by geographic region based upon the location of the customers (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;United States&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;786,802&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;565,964&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;473,779&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Americas excluding U.S.&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;41,892&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;45,719&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;27,802&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Europe&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;26,916&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;45,879&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;22,925&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Middle East &amp;amp; Africa&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;10,885&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;19,018&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;14,075&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Asia Pacific&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,332&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,814&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,658&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt 0 7.75pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;867,827&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;679,394&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;541,239&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s property and equipment, net of accumulated depreciation, are located in the following geographical areas (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.888%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.610%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.235%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;United States&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21,785&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;19,900&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;China&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,220&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,840&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;India&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;829&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;43&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt 0 7.75pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;25,834&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21,783&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Contract Asset&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The primary contract asset is revenue recognized on professional services contracts where the services are transferred to the customer over time, which has yet to be billed, and is classified to remaining performance obligations within accounts receivable. Amounts are billed in accordance with the agreed-upon contractual terms. The balance as of December&#160;31, 2022 was $2.3&#160;million of which the Company expects to bill 81% of the balance during 2023. The balance as of December&#160;31, 2021 was $1.7&#160;million of which $0.3&#160;million remained in the Company's Consolidated Balance Sheet at December&#160;31, 2022. The increase in the contract asset was driven by the timing and volume of professional services contracts.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Contract Liability&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Deferred revenue was $58.6&#160;million and $49.5&#160;million as of December&#160;31, 2022 and 2021, respectively. The increase in deferred revenue of $9.1&#160;million is primarily driven by cash payments received or due in advance of satisfying the Company's performance obligations during the year being greater than the $26.8&#160;million of revenue recognized that was included in the deferred revenue balance at the beginning of the year.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Revenue allocated to remaining performance obligations represent contract revenue that has not yet been recognized, which includes deferred revenue and amounts that will be invoiced and recognized as revenue in future periods. This amount was $199.0 million as of December&#160;31, 2022, and the Company expects to recognize 35% of such revenue over the next 12 months and the remainder thereafter.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Contract Costs&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company capitalizes certain sales commissions related primarily to multi-year subscriptions and extended warranty support for which the expected amortization period is greater than one year. As of December&#160;31, 2022 and 2021, the unamortized balance of deferred commissions was $11.2&#160;million and $7.4 million, respectively.&#160;For the year ended December&#160;31, 2022 the amount of amortization was $4.0&#160;million, compared to $1.4 million for the year ended December&#160;31, 2021. There was no impairment loss in relation to the costs capitalized for either period.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Concentration of Customer Risk&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;No customer accounted for more than 10% of the Company&#x2019;s revenue for the years ended December&#160;31, 2022 and 2021. Lumen Technologies, Inc. (formerly CenturyLink, Inc.), the Company&#x2019;s only greater-than-10%-of-revenue customer, represented 11% of revenue for the year ended December 31, 2020.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;One customer represented 11% of the Company&#x2019;s accounts receivable as of December&#160;31, 2022. Another customer represented 12% of the Company&#x2019;s accounts receivable as of December&#160;31, 2021.&lt;/span&gt;&lt;/div&gt;</us-gaap:SegmentReportingDisclosureTextBlock>
    <us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzMyNjA_80ceea13-fb9b-48eb-8513-899f344dea95">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following is a summary of revenue disaggregated by geographic region based upon the location of the customers (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;United States&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;786,802&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;565,964&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;473,779&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Americas excluding U.S.&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;41,892&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;45,719&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;27,802&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Europe&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;26,916&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;45,879&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;22,925&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Middle East &amp;amp; Africa&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;10,885&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;19,018&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;14,075&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Asia Pacific&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,332&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,814&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,658&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt 0 7.75pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;867,827&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;679,394&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;541,239&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ieae5dffc94804c0fb48da0faaee7d475_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzItMi0xLTEtMzYxOTg_f5b53a63-7315-4262-89ca-2e5ccce3faa2"
      unitRef="usd">786802000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i792b178b52944936bae6b48cfc3fce7f_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzItNC0xLTEtMzYxOTg_534c83e3-b7b6-4f4e-b9ae-ef7b82890efd"
      unitRef="usd">565964000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i728d38d208c644f8bd1d8544c2d48f1e_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzItNi0xLTEtMzYxOTg_4bad86ed-403a-4210-a1db-dcefa75fdafe"
      unitRef="usd">473779000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i33041b28ed9f44f5a1ea4de785d07036_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzMtMi0xLTEtMzYxOTg_33676630-bd77-406d-91df-0dfdc5218a82"
      unitRef="usd">41892000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ie84a15f4241d4e8da95b19019b001ec5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzMtNC0xLTEtMzYxOTg_cdadde21-6301-4d3f-bd43-7511de19cebc"
      unitRef="usd">45719000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i79eefe6e67de420ab8fe4564c2d04fa1_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzMtNi0xLTEtMzYxOTg_d0ec65c7-6e78-4198-933f-e2673d256a97"
      unitRef="usd">27802000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i5cc304bf3bd8498298acfd78ba22d90f_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzQtMi0xLTEtMzYxOTg_8839a5f7-a0ca-401c-904d-22d83ff329b0"
      unitRef="usd">26916000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i5ed901e4c55c42e4a419f1770435e0db_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzQtNC0xLTEtMzYxOTg_5fb880d6-d4e1-416d-895c-9ac17809ef79"
      unitRef="usd">45879000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="id595cb86ff10436abaf67dbd61231ec1_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzQtNi0xLTEtMzYxOTg_f966c650-4ba0-4ba3-a49b-78791ee87dbb"
      unitRef="usd">22925000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i8b262bd7fe1a4691a8c6bae2a9787fbd_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzUtMi0xLTEtMzYxOTg_c0bd7c80-a634-4301-9665-f6e70b2f730f"
      unitRef="usd">10885000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i18ab8bb7900d4d298140ed4be06aba85_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzUtNC0xLTEtMzYxOTg_e354575a-ae3b-4efc-a70e-c343d61e485b"
      unitRef="usd">19018000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="iff0d225298e349df93cca1c136c9fe21_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzUtNi0xLTEtMzYxOTg_2fac8335-cb44-403d-b764-b264e379124b"
      unitRef="usd">14075000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="idb8c564de1d14caaabae034fdf7227b4_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzYtMi0xLTEtMzYxOTg_4c6f54a4-9973-4bde-9198-1cfaa6c6868e"
      unitRef="usd">1332000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i43b188fea50c48b0b4b3465f99c1a9a9_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzYtNC0xLTEtMzYxOTg_9bd2be1b-7215-49c1-93f0-f399f65dc7ee"
      unitRef="usd">2814000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i6e6ad924af64444b9fd8b9c73fe1fd0e_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzYtNi0xLTEtMzYxOTg_4583b80b-b2de-45cb-9b1d-784e185954c2"
      unitRef="usd">2658000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzctMi0xLTEtMzYxOTg_3dba2ccc-a869-49c5-aa74-15d72ab3f087"
      unitRef="usd">867827000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzctNC0xLTEtMzYxOTg_bb22b36f-6f84-4c9d-9ccb-fdda9e91632c"
      unitRef="usd">679394000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzctNi0xLTEtMzYxOTg_9c2f5a56-a510-4ac8-8c78-1271ed7fba5d"
      unitRef="usd">541239000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:ScheduleOfEntityWideDisclosureOnGeographicAreasLongLivedAssetsInIndividualForeignCountriesByCountryTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzMyODA_ea5d1671-b706-4bf8-aa9e-f20e26513d15">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s property and equipment, net of accumulated depreciation, are located in the following geographical areas (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.888%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.610%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.235%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;United States&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21,785&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;19,900&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;China&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,220&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,840&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;India&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;829&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;43&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt 0 7.75pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;25,834&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21,783&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfEntityWideDisclosureOnGeographicAreasLongLivedAssetsInIndividualForeignCountriesByCountryTextBlock>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="ia7372260ff5944fbbd414f122dbb6a4e_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzItMi0xLTEtMzYxOTg_f72a59ef-ee7e-47ad-a9e0-97b5ccf11dc2"
      unitRef="usd">21785000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="idc76a7bbda2145469e7de41ace18e7dd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzItNC0xLTEtMzYxOTg_c68e9ddb-ce37-43d6-8575-e536aed14a5a"
      unitRef="usd">19900000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i2449b8a5dc374d20bbd43cda851a4aec_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzMtMi0xLTEtMzYxOTg_e3f99f86-0284-402d-ba84-2d3720cf3a34"
      unitRef="usd">3220000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="id634ed9a8216446eb71023487e565cff_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzMtNC0xLTEtMzYxOTg_35a5e99c-1383-4d58-8de4-b1eb4f77321e"
      unitRef="usd">1840000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i4dbf04314295476890b7ee4e02340210_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzQtMi0xLTEtMzYxOTg_5a222335-975e-4c68-adfa-0f937cbecbaa"
      unitRef="usd">829000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i6c55f8ead39246eeb1b8ab7a037df871_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzQtNC0xLTEtMzYxOTg_0f7c0135-8258-411d-8109-893e898eac9e"
      unitRef="usd">43000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzUtMi0xLTEtMzYxOTg_290b8449-305e-443b-9da7-8221af050536"
      unitRef="usd">25834000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzUtNC0xLTEtMzYxOTg_0d540faa-ddce-431a-a6f7-902b582bb4fa"
      unitRef="usd">21783000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:ContractWithCustomerAssetNet
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEyNTI_110b8213-c3e4-4e53-a8ea-adafb85c6167"
      unitRef="usd">2300000</us-gaap:ContractWithCustomerAssetNet>
    <calx:ContractWithCustomerAssetExpectedToBeBilledYearOnePercent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEyOTI_ac005320-b06a-4ef0-8f23-02fd08cd22c9"
      unitRef="number">0.81</calx:ContractWithCustomerAssetExpectedToBeBilledYearOnePercent>
    <us-gaap:ContractWithCustomerAssetNet
      contextRef="i5647c99c6e924e9681658be971eaeb0b_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEzNjM_bcd34159-f56a-4ccb-8116-96f6139dd9c7"
      unitRef="usd">1700000</us-gaap:ContractWithCustomerAssetNet>
    <calx:ContractWithCustomerAssetPriorPeriodNotRecognized
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEzNzU_9f761142-0b95-4424-9642-f58d1e99b75c"
      unitRef="usd">300000</calx:ContractWithCustomerAssetPriorPeriodNotRecognized>
    <us-gaap:ContractWithCustomerLiability
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzQ1MzU_ac3f4c13-3339-4f58-ba33-2d283781f8a6"
      unitRef="usd">58600000</us-gaap:ContractWithCustomerLiability>
    <us-gaap:ContractWithCustomerLiability
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzQ1NTA_afe36b05-f18f-4098-aa8c-ceba435dd4c7"
      unitRef="usd">49500000</us-gaap:ContractWithCustomerLiability>
    <us-gaap:IncreaseDecreaseInContractWithCustomerLiability
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzQ1NjU_502b1d4e-0606-4bd0-8d42-56d349135340"
      unitRef="usd">9100000</us-gaap:IncreaseDecreaseInContractWithCustomerLiability>
    <us-gaap:ContractWithCustomerLiabilityRevenueRecognized
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzQ1Nzk_87fca2e9-5414-4200-87f2-189e98dce71a"
      unitRef="usd">26800000</us-gaap:ContractWithCustomerLiabilityRevenueRecognized>
    <us-gaap:RevenueRemainingPerformanceObligation
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzIyMjE_7827a291-80f3-45fe-ba74-b19f4c5484cb"
      unitRef="usd">199000000</us-gaap:RevenueRemainingPerformanceObligation>
    <us-gaap:RevenueRemainingPerformanceObligationPercentage
      contextRef="i2bf837c4cb024b00b0c258f20aeaad31_I20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzIyNzE_3079d364-c530-4db6-a071-953d03bf1121"
      unitRef="number">0.35</us-gaap:RevenueRemainingPerformanceObligationPercentage>
    <us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1
      contextRef="i2bf837c4cb024b00b0c258f20aeaad31_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzMyMjE_8911e7d7-725e-4452-8f3e-781e2e400d80">P12M</us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1>
    <us-gaap:CapitalizedContractCostGross
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzMxODU_3f6c6f68-60cb-4356-a002-67bf27c31fad"
      unitRef="usd">11200000</us-gaap:CapitalizedContractCostGross>
    <us-gaap:CapitalizedContractCostGross
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzI2MzE_de35489f-bc4a-4ee8-8ff2-668aa69a32bd"
      unitRef="usd">7400000</us-gaap:CapitalizedContractCostGross>
    <us-gaap:CapitalizedContractCostAmortization
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzMyMDA_7867e02f-8089-454f-8871-39b108b70494"
      unitRef="usd">4000000</us-gaap:CapitalizedContractCostAmortization>
    <us-gaap:CapitalizedContractCostAmortization
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzI3MDM_cd308047-2cb2-452d-9f28-d01e5f3d6403"
      unitRef="usd">1400000</us-gaap:CapitalizedContractCostAmortization>
    <us-gaap:CapitalizedContractCostImpairmentLoss
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzE2NDkyNjc0NDQ5NTA_0af5d7d8-68b6-4f0e-9e86-6280ec15eec6"
      unitRef="usd">0</us-gaap:CapitalizedContractCostImpairmentLoss>
    <us-gaap:CapitalizedContractCostImpairmentLoss
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzE2NDkyNjc0NDQ5NTA_b25a1df9-ea72-489b-a0eb-13220d6f0dfc"
      unitRef="usd">0</us-gaap:CapitalizedContractCostImpairmentLoss>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i04be09c8797d413a93af8d5d08358be6_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzMwMjc_44a01804-92b3-4ffb-8694-4d1d60747158"
      unitRef="number">0.11</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i7932d93f74d241a2b2e0cfcec811a2f5_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzMxMjY_ed45b01e-a030-4a06-90d8-ef67eebc1861"
      unitRef="number">0.11</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="ida3b3cbaef8142a188dbc53f1b97daac_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzMyMTQ_cec02ff2-5685-43a7-bc3f-b9f5aa296fae"
      unitRef="number">0.12</us-gaap:ConcentrationRiskPercentage1>
    <dei:AuditorFirmId
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xNTQvZnJhZzoxNjU4M2MxZGFiNDM0ZTNjYTEwNGY3MDU4N2M0NDNlZS90ZXh0cmVnaW9uOjE2NTgzYzFkYWI0MzRlM2NhMTA0ZjcwNTg3YzQ0M2VlXzE0OQ_dc724943-2728-44f7-a688-2e03a55fbd87">185</dei:AuditorFirmId>
</xbrl>
