<?xml version="1.0" encoding="utf-8"?>
<xbrl
  xml:lang="en-US"
  xmlns="http://www.xbrl.org/2003/instance"
  xmlns:appf="http://www.appfolio.com/20201231"
  xmlns:dei="http://xbrl.sec.gov/dei/2020-01-31"
  xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
  xmlns:link="http://www.xbrl.org/2003/linkbase"
  xmlns:srt="http://fasb.org/srt/2020-01-31"
  xmlns:us-gaap="http://fasb.org/us-gaap/2020-01-31"
  xmlns:utr="http://www.xbrl.org/2009/utr"
  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="appf-20201231.xsd" xlink:type="simple"/>
    <context id="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i8e1be9b2d93544ec85d1e51b09118311_I20200630">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <instant>2020-06-30</instant>
        </period>
    </context>
    <context id="ied1dd92e7f9246c1a45a4070cdcbc58e_I20210215">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-02-15</instant>
        </period>
    </context>
    <context id="ia6b2b6fa1d72456ba9f14cec344608ab_I20210215">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-02-15</instant>
        </period>
    </context>
    <context id="ie6b462932c454ef1af9e87a9f2fb7348_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="if87112ed58d44be294bd33c5ebbf224d_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="ibe4381ea556a4f5dbfe309a4824185d7_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i696bcdd341204f7e81923e221017f98a_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="ie8df2e081bbc447b804c96643bebb2b1_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="iff665478529c4a5cbc4d81477e18f1cd_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i7914f6f887a9464f88693d0427ccdb78_I20171231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="i380df49aca51413db24bbf1817db8287_I20171231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="i498f187c4bf34f47b08c411cddca983c_I20171231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="ib0fb2ee59e454533b485c7404c5ddf95_I20171231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="if29e6192a513486b813c835f1b67c375_I20171231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="i4fdf7beea5e247d6a2da08d07d68f4d6_I20171231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="i33fd34f1e8d1430f80df86809474ca2c_I20171231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="ia66de228f69146c68d932a63d592f037_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="idf42afbf9088434abc9cde73af39ad09_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="id0400705499b4ba6aa92d0b3e52a34cc_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i3a21f7a26f324477a23e1b00e3de6acf_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="ie78d128f448f42b59f0c10b1987488ab_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i4f9a14399d354f778d02a86329cf3648_I20171231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CumulativeEffectPeriodOfAdoptionAxis">srt:CumulativeEffectPeriodOfAdoptionAdjustmentMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="iec0a0a7e74c54db6a03735eb3abc8ecc_I20171231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CumulativeEffectPeriodOfAdoptionAxis">srt:CumulativeEffectPeriodOfAdoptionAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="i6069f181c51a415493981b96f64e2255_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i8d5709137fe94ae29243529a3254cedd_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i4867c6353b784ddda2975953bb82525f_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i5c4d95a6966e422a919bfb5999cbf7fc_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i942745ea801a453f9a257557fb01f52d_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i791194c060134928b768659ecb27b02b_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="idc7d4eeeecff419bb9e2bfa4f8aa1a5b_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i02d63145a04b47a48a5a20bb6671ce00_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i2f7a043449ac46d590ef12acaf798ce2_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i7dbaf7d9006844cbbb1962be43a3b7b9_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i354c2585bf144804a5bb15401a0002e2_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i2ffe2487696b4ef8ae9895d1f3e60e2d_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ia17898eab0a84e86af4f2838bb075bc8_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ie1f2fd74e7814953a98976e1522397f3_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i2eceb2a67816475f9495f49c45469f2c_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i98e2ea9866cd4d27921474d613e42da0_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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="i3f2bc66ba866450fb4937f02eafd39f7_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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="if4ee326334da492e92b01dc1a3d4ae35_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i1fbc00c8aa2048a4b08a253ab945d669_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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="i6eeb1f13b2194de59269c30d1f5e4d1b_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
                <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="if51c7056a1e3488ba6078db402a630de_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
                <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="i648786f29a0c4eab8f7bec7d3ec86876_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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="ib90028dcbf22490dbcf8b9384e259871_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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="i14449d34ed1b478492c96facf4421275_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i18e3341bbce74544a9b308931cf2782f_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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="i7537d46876a24976951eb2e446da87ae_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i85ed74d7b77a4a9f8e3c6d1dd9cefac9_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="icc5bc645dca9426a878a741c849c2024_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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="ie8c0c53063e34fd0b5d0a014a3b311a7_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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="ic9339f252af746089527f092369d643f_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ia838a71712074d6a982bc46c2fe29970_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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="ia520f44bc1bd4a69967d96420c544e6b_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">appf:SoftwareAndServicesOfferedToRealEstateVerticalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i7b9747939dce47579d55925da13ff57c_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">appf:SoftwareAndServicesOfferedToRealEstateVerticalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i791ab114ec454d5b90c722c12318b53c_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">appf:SoftwareAndServicesOfferedToRealEstateVerticalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i25006d5d67bf47229384f8b1670eb090_I20200930">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DisposalGroupClassificationAxis">us-gaap:DiscontinuedOperationsDisposedOfBySaleMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis">appf:MyCaseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-09-30</instant>
        </period>
    </context>
    <context id="ibbf341c3878c4cc892fbbf6b21f3784b_D20200930-20200930">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DisposalGroupClassificationAxis">us-gaap:DiscontinuedOperationsDisposedOfBySaleMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis">appf:MyCaseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-09-30</startDate>
            <endDate>2020-09-30</endDate>
        </period>
    </context>
    <context id="i775737621cf8499caf903c657527ac4f_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="id0bed8b25dc44f859958e2715fbff35b_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i3596c1bc1a4c48b782bc4a165bea69ca_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:OfficeEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i8247a60257294e31ae341ca5c7084724_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:OfficeEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i629deff96d36469d8b91b79f2637153d_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:SoftwareAndSoftwareDevelopmentCostsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i9ef50e190b0446b6b41c5f0c12f3822b_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:GoodwillMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i615de3470d494946b4a5d94b44b0e6ec_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i770e64f46e564319a6c18b27195bb0d8_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i14bdef26eb4144e79975801988ed103a_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockUnitsRSUMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i0d3eeb8943cc4fc3a192ffa175deb491_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i84676c5ab81f419796cc34238a67fe65_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i5bd52c1973244553a751a761f389ca66_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i05f36af467dd4c4b8764033a297871cb_I20171231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:InitialApplicationPeriodCumulativeEffectTransitionAxis">us-gaap:CalculatedUnderRevenueGuidanceInEffectBeforeTopic606Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="i1622f2335b2d43d2b9f0f3fabf8c307e_I20180101">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AdjustmentsForNewAccountingPronouncementsAxis">us-gaap:AccountingStandardsUpdate201409Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:InitialApplicationPeriodCumulativeEffectTransitionAxis">us-gaap:DifferenceBetweenRevenueGuidanceInEffectBeforeAndAfterTopic606Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-01-01</instant>
        </period>
    </context>
    <context id="if18cdb85957749b29afe5d94e2aa5014_I20180101">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <instant>2018-01-01</instant>
        </period>
    </context>
    <context id="i99864d0f89d24a0cbafa25d8e194e0fd_I20190101">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AdjustmentsForNewAccountingPronouncementsAxis">us-gaap:AccountingStandardsUpdate201602Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-01-01</instant>
        </period>
    </context>
    <context id="if48a6e4c69274938817f9b2089caf91b_I20190101">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <instant>2019-01-01</instant>
        </period>
    </context>
    <context id="i2d60ae6645b148edbbdc326bbfaa22e0_I20190107">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">appf:DynastyMarketplaceInc.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-01-07</instant>
        </period>
    </context>
    <context id="idc8ee32b1d5841afbe09b338f5221edb_D20190107-20190107">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">appf:DynastyMarketplaceInc.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-07</startDate>
            <endDate>2019-01-07</endDate>
        </period>
    </context>
    <context id="i4c7848f33a1048f88ca559d8addb4dd3_I20190107">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">appf:DynastyMarketplaceInc.Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:SoftwareDevelopmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-01-07</instant>
        </period>
    </context>
    <context id="ie3749537f4934e1b9c5e97c74cec129c_D20190107-20190107">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">appf:DynastyMarketplaceInc.Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:SoftwareDevelopmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-07</startDate>
            <endDate>2019-01-07</endDate>
        </period>
    </context>
    <context id="i9d875afba5694b19b69b6e6b34d4d43a_I20190107">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">appf:DynastyMarketplaceInc.Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DatabasesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-01-07</instant>
        </period>
    </context>
    <context id="if70a6727567142929980877fade17471_D20190107-20190107">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">appf:DynastyMarketplaceInc.Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DatabasesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-07</startDate>
            <endDate>2019-01-07</endDate>
        </period>
    </context>
    <context id="icd2278e6bb104cf2b98610aaafb99846_I20190107">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">appf:DynastyMarketplaceInc.Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-01-07</instant>
        </period>
    </context>
    <context id="i609d9b36182b4d279927c63935b1622a_D20190107-20190107">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">appf:DynastyMarketplaceInc.Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-07</startDate>
            <endDate>2019-01-07</endDate>
        </period>
    </context>
    <context id="i3ce17488f92b40949fc9278d4c2f6360_I20190107">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">appf:DynastyMarketplaceInc.Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:OrderOrProductionBacklogMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-01-07</instant>
        </period>
    </context>
    <context id="i2bed893afd274119b5f5e1aee82e3a43_D20190107-20190107">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">appf:DynastyMarketplaceInc.Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:OrderOrProductionBacklogMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-07</startDate>
            <endDate>2019-01-07</endDate>
        </period>
    </context>
    <context id="i4d0a8d8ecf0841258eb6f60a7f8f23e4_I20190107">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">appf:DynastyMarketplaceInc.Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksAndTradeNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-01-07</instant>
        </period>
    </context>
    <context id="i7d87e35597934392b2904d7e25a9f6c4_D20190107-20190107">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">appf:DynastyMarketplaceInc.Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksAndTradeNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-07</startDate>
            <endDate>2019-01-07</endDate>
        </period>
    </context>
    <context id="i43099fb76a384b87b43d53efd2a3909c_I20190107">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">appf:DynastyMarketplaceInc.Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-01-07</instant>
        </period>
    </context>
    <context id="i00cae34e5d5446ba8e1a2cdd41b544d9_D20190107-20190107">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">appf:DynastyMarketplaceInc.Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-07</startDate>
            <endDate>2019-01-07</endDate>
        </period>
    </context>
    <context id="i78b6030868ae4c7d94cfbca83d304d2d_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AgencySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i8cf289ac68fb426db15e6292cf385cfb_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i48dbca9878c24d70b873012d65fa2a24_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i6f51dcdbd6204647b6c985d4fd00579b_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AgencySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="id7048402d3c548c4966c4b9f13de2380_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="icbfe841fc9d24061ab763d5812f194de_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i66a55d91487a4d5a969d369fe0ceabff_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AgencySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i063bf61a1c614c57881281e9237e7cc7_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="iebc4c45ba805479a827d635e1b70430d_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i58fd03d6e4b044e5a362dfb44b2a3f33_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AgencySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ie0e6a29b38094c8791d030fbe4ce319c_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i0ed5787f541b486d876c274976b0b95f_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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>2020-12-31</instant>
        </period>
    </context>
    <context id="i71bd0b1d46504994a1f45f2ab19fb143_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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>2020-12-31</instant>
        </period>
    </context>
    <context id="ic3806ae5e6874059b5c912a6a9c6bcab_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i97ee30ebebd647588addbc170a7a6aa8_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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>2020-12-31</instant>
        </period>
    </context>
    <context id="ife7f5317c120436a8faae90027509af7_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:USTreasurySecuritiesMember</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>2020-12-31</instant>
        </period>
    </context>
    <context id="ib271ac0c1622494f948735c657ff48ef_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:USTreasurySecuritiesMember</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>2020-12-31</instant>
        </period>
    </context>
    <context id="i402acf436df84b7880c2a4aa61e9d41b_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i40b37e9adad448408a57f1b45de0087e_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i954b5d7bfb764e6b8df91e062c4a5f48_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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:AgencySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i15ceb52655f34529b9889b41cc7b473f_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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:AgencySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i2f213a81ab22426b81c14619e6dc9e1f_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AgencySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i80b15b5a7f6843a7bd2b6e36ec705928_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AgencySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i3e78b1a19aec4a508dd936613ddc4ce8_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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:USTreasurySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ie4314adc8a2740f6b240fa95a1ebae5a_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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:USTreasurySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i724e7781c207431fbf6dd28887c958a4_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i1f17e7aa7d024a5e889e2c7a20010173_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i6cafb0d2772f4b51801f4683cf68928f_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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>2020-12-31</instant>
        </period>
    </context>
    <context id="i3104d6b8cc81460b886135648ef108ae_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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>2020-12-31</instant>
        </period>
    </context>
    <context id="i45c535d20de2421f8b8c4c9f3b8f2c75_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i8f2082b48c6c4e60ab0d5bc5f521f3ab_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i838feed0e5de4761b737bd296a069623_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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>2019-12-31</instant>
        </period>
    </context>
    <context id="i6587dce9c8104d439719029c960dcb1f_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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>2019-12-31</instant>
        </period>
    </context>
    <context id="iac7a88785001472ba7c6196dbced8c27_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i58c8c2559f4c412c9aa777284b499f0f_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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>2019-12-31</instant>
        </period>
    </context>
    <context id="i205b6d6d5cb64ef38699da52825221e6_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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:CorporateBondSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i2bffd86069d54bde8c67ec4b9568ee3d_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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:CorporateBondSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i24df997cf5d74e7d80367e0bffcf255f_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="if0e8e8ff65f248088bfcd2ca9b7a0474_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i3c8a7325a47b41f58b3c52c55e00638f_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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:AgencySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="if89c7407c49046898c2c0c7a05a86f88_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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:AgencySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i1cca2492bca943899611f7977e24a7bc_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AgencySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i4a05c430240548d7ae1e9439486e2959_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AgencySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="iafa0cc8ceb8744b589dad51320e7b254_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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:USTreasurySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i3703ca84213b404bb3cda52c9cd9f86c_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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:USTreasurySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i5320fe164a0d41e0868d3ea73cf50da2_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i649b5470b0aa4b94a6b59f25c5c9e8a4_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i1610bd2373aa4a68aeadc900f79ca058_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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>2019-12-31</instant>
        </period>
    </context>
    <context id="i5b021b3f26974876a89fe29b014da4f7_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</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>2019-12-31</instant>
        </period>
    </context>
    <context id="ib8e7d2a2f1c7430f8b4578b37edf71d0_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="if987bb93d4bf48ff932dd2563732faff_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i515bfbaa190a4882b2eff4a3157c8383_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementBasisAxis">us-gaap:EstimateOfFairValueFairValueDisclosureMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">us-gaap:SecuredDebtMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="ida9949b23cc94e42aa55e15986693711_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementBasisAxis">us-gaap:EstimateOfFairValueFairValueDisclosureMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">us-gaap:LineOfCreditMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i85131be12f96492f9e0ebdb0c1cd2b37_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">appf:DataCenterAndComputerEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i406c34a01e874bdbbc4db18c847351c5_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">appf:DataCenterAndComputerEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="ia8afc8f42fe046c89039eb0f3abde265_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ib25e2a8ea9e6467aaeb63e75eb846b63_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="ia82cae4596f4432a9a60ae063dc10480_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:OfficeEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i512e9e91df8644dda8fa5f808dba04f0_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:OfficeEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="ib43ad54ad91c4e21a9e213dcb3b4c221_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i12a91ae5f4854962ba8dddb3d99cf44d_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i2f2b6dd4a1024eeb93232927f1fafb3c_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ConstructionInProgressMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ic563c8553e5f4977912b94d3467c73a7_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ConstructionInProgressMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i4127e588db5841269435404cd726e073_I20200930">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">appf:FurnitureAndFixturesAndLeaseholdImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-09-30</instant>
        </period>
    </context>
    <context id="i30010c4df2d84ca88b90d5ce364f97ae_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis">appf:MyCaseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="iea76d1d765f54e6d80291c4826ac3a13_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="if5d02b7ae4fc48bf8963cb0529762997_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="if2948fe13c5c4baf8a273630f7e05c6a_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:DatabaseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i2f0717644b964c458b04d2ff9f73b68b_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:DatabaseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ie8aadda0e8c746b287950afae233ea5d_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:TechnologyMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i06a3dcc6b8864fe0b010eadbf7e5acde_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:TechnologyMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i9c393c835fa44f2da654193a7234825b_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksAndTradeNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i59585b72b31549fbbf496319fdffdc12_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksAndTradeNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i4bfcdf0391e844229cded3519641beec_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:PartnerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ifeed99d15f794c749d7b94c1cdceb0ae_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:PartnerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i59322443f64f42fa82a6aeb2d870940d_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i6fde2b93714b413ba202ab95939db554_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i0e78dc2e785542e2a2b5644873e00020_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:InternetDomainNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="icf919fe6398845959f7346b359253f90_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:InternetDomainNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="if01218679d634590b83a3577557223ad_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:PatentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i6da119b01e514b70934f4ec2f647a9d6_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:PatentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="if19d9c1a49cc42d7ba1739dcca8e72a7_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i11d9ca937cb84bf39ecdc8ec21918a30_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i6cbb6f4e7b46444da7ae714fffa8a978_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ib7a6cf90754b49568e3786d7efc9c2cd_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:DatabaseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i0112f48ffb094d65a97b721bd990a5ce_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:DatabaseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="icdc30ee9208d4bcba77baaec164c7c64_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:TechnologyMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i2d55b6e934984b12997c41e9c938cdf5_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:TechnologyMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="iea177e156ebb487b806bf89240e7c8b8_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksAndTradeNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i9045cb2e5d9847a59f9b41c0f9886808_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksAndTradeNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ifb1203c43a37444b9cf6e44eaf3150b6_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:PartnerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i42432e1e809641fe877687b20e2b8dbb_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:PartnerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i2b0d072d42704847b75ee4249d034bf7_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i9f56c3879ed84f02b3caba13708ebcd6_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i13466a2dc6e748de9f0fb9f156621b59_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:InternetDomainNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i3924e18efe364cd2ace1a364a5089f6e_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:InternetDomainNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i9834e517f7204327a69ab87c22c7956b_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:PatentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i3314efe5584b45daa6d6bf3a9252e50f_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:PatentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i42c39ba5a870471c851f5256fd74a2a5_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:OrderOrProductionBacklogMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i91c2d3baf0334c13b2c95f446e16f20c_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:OrderOrProductionBacklogMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i941de9c5c70a4aaa8a5f02dbaee7bf38_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ic80291bbc9284c33abd9f2325ed5ec7f_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i8c44c9d704f94577a58842cd80552570_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i1839549352ce40bb80d59575701cc727_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:PrepaidExpensesAndOtherCurrentAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="iaf40a4a4574a4692a96d0a3775c9bce2_D20201217-20201217">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">appf:RichardsonTexasMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-12-17</startDate>
            <endDate>2020-12-17</endDate>
        </period>
    </context>
    <context id="ib579298b6d534de4a508f67a6eb46121_I20201217">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">appf:RichardsonTexasMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-17</instant>
        </period>
    </context>
    <context id="i5d2bb43fa25f4ede855814fbc5ea560f_I20181224">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">us-gaap:LineOfCreditMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-24</instant>
        </period>
    </context>
    <context id="ief4ca0d6062342e09748b18158236fe3_D20181224-20181224">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">us-gaap:LineOfCreditMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-12-24</startDate>
            <endDate>2018-12-24</endDate>
        </period>
    </context>
    <context id="i00aaad95dd5e4b6c9f541e75f8af9bfa_I20181224">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">us-gaap:LineOfCreditMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-24</instant>
        </period>
    </context>
    <context id="i97955c9d90b447298886c0809dad35fe_D20181224-20181224">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">us-gaap:LineOfCreditMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">us-gaap:LondonInterbankOfferedRateLIBORMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-12-24</startDate>
            <endDate>2018-12-24</endDate>
        </period>
    </context>
    <context id="i3d2a314ee2504faf9675a444488e13dc_D20181224-20181224">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">us-gaap:LineOfCreditMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">us-gaap:LondonInterbankOfferedRateLIBORMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-12-24</startDate>
            <endDate>2018-12-24</endDate>
        </period>
    </context>
    <context id="if25f5735de8b496f8a8d99c6e8d45323_D20181224-20181224">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">us-gaap:LineOfCreditMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">us-gaap:FederalFundsEffectiveSwapRateMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-12-24</startDate>
            <endDate>2018-12-24</endDate>
        </period>
    </context>
    <context id="i826b214e658d46a79510bbd20e137e62_D20181224-20181224">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">us-gaap:LineOfCreditMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">us-gaap:FederalFundsEffectiveSwapRateMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-12-24</startDate>
            <endDate>2018-12-24</endDate>
        </period>
    </context>
    <context id="i1e858f386e8440168941459a4818d4b1_D20181224-20181224">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">us-gaap:LineOfCreditMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-12-24</startDate>
            <endDate>2018-12-24</endDate>
        </period>
    </context>
    <context id="ia5623b515ce04b94a632d2c12bfbd351_I20200929">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:SecuredDebtMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">us-gaap:LineOfCreditMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-09-29</instant>
        </period>
    </context>
    <context id="i1f47cdaf3a8945fe95c94b53adcfd508_I20200929">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">us-gaap:LineOfCreditMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-09-29</instant>
        </period>
    </context>
    <context id="i2713f3c7fb3a48aa9a42d605d7028a69_I20181224">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <instant>2018-12-24</instant>
        </period>
    </context>
    <context id="ia63bf3ccdce24413b417a81518b6bd6a_I20181224">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:SecuredDebtMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">us-gaap:LineOfCreditMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-24</instant>
        </period>
    </context>
    <context id="ifa0ef33b66ab45b2be95c13e1a816073_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">us-gaap:LineOfCreditMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i7bdd49104c9a4939829127a288b50cd3_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:SecuredDebtMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">us-gaap:LineOfCreditMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i829c8c644d9041498e5e6b8e3b91f03a_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:OtherAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i3bedcfe0e1984287a7cb21d97bbb1fff_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:SecuredDebtMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">us-gaap:LineOfCreditMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i46fb2a43bf58405182bde6aa9232f5fa_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:OtherCurrentLiabilitiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i617566f47284443e9deae70759318fe3_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:OtherCurrentLiabilitiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i757d8937ab924ece9470646b55114888_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:OtherCurrentAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ida24abba03d94978821a3af5af849f29_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:OtherCurrentAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i45088498d4d54152a858c260f003d2c1_I20200930">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <instant>2020-09-30</instant>
        </period>
    </context>
    <context id="i6bcd27dfaced473d9f8ce876ed96f27c_D20210101-20210131">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-01-31</endDate>
        </period>
    </context>
    <context id="ic77deb8838064aa4b4d2582a554d5094_I20150625">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <instant>2015-06-25</instant>
        </period>
    </context>
    <context id="i486b50d6796e458787aeee05fb98d767_I20150625">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2015-06-25</instant>
        </period>
    </context>
    <context id="i06d1dcad0b414943bd97379ecab92675_I20150625">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2015-06-25</instant>
        </period>
    </context>
    <context id="ie9581f6f547543d2a095259cacc478e1_I20150625">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:PreferredStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2015-06-25</instant>
        </period>
    </context>
    <context id="iccdd68156c904b7b8b969730c9de8556_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i3505cdf241aa4a2c8081f6d9f7a4c764_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i20737f1adc9f4c41b155b4054e95aa6a_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ConversionOfStockByUniqueDescriptionAxis">appf:CommonClassBToCommonClassAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i86d127b091904d9fba57f908929b83a8_I20190220">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <instant>2019-02-20</instant>
        </period>
    </context>
    <context id="icf6294c2e6ce4c0db2bbcf34f0ca913f_D20200101-20200331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-03-31</endDate>
        </period>
    </context>
    <context id="i3ad85cad9ecc44e0a7d7902695ac893b_I20151231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">appf:TwoThousandFifteenStockIncentivePlanMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2015-12-31</instant>
        </period>
    </context>
    <context id="i8a3bcdd9b57444c5a51e029d3423b314_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">appf:TwoThousandFifteenStockIncentivePlanMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i99819e9e20e74b18823f1ff272f2c656_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">appf:TwoThousandFifteenStockIncentivePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i1b2e06d0b70d42e9bb04a8e372756b02_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockOptionMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">appf:A2017PerformanceMetricTargetedFreeCashFlowPerformanceMetricMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="id458400680174ae3a9d186337b40caf5_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockOptionMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">appf:A2017PerformanceMetricTargetedFreeCashFlowPerformanceMetricMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="iccbf8db6b3764aae825f3fe2535d2c10_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockOptionMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">appf:A2017PerformanceMetricTargetedFreeCashFlowPerformanceMetricMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="id1b662444b08435dbe2208bd233d411a_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockOptionMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">appf:A2017PerformanceMetricTargetedFreeCashFlowPerformanceMetricMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i26426ceddf214a1ea5914e18c010cc38_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:EmployeeStockOptionsAndPerformanceStockOptionsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i4fd6f08a9bb84b028249c0fdce83d8bb_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i5a75de892bd14090845814ed9650eb72_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:EmployeeStockOptionsAndPerformanceStockOptionsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i950a2961c7164c988b3443285bc84af6_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:RestrictedStockUnitsAndPerformanceStockUnitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i8d049bdfbdf1486aaf73e64df069c75a_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:RestrictedStockUnitsAndPerformanceStockUnitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i4bb3339d6c794033b847eb68961c8967_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:RestrictedStockUnitsAndPerformanceStockUnitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ib7afd0848c9a40caacc99e8e8facc49e_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="id4243e69cf1948019aae6107533fa3cc_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ibf5c2c756ac0462282be61345828597f_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i0bcca23ab6324e1983320926fcd91402_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="id6e5225ba00e4ca9b59edf699af0b36b_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheOneMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i7f02992a4d704a7ea6286f30ad53e8f9_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheOneMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i3cd044a5772d4b08a888332b9e2800e0_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsMember</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="i073aee93ba424d17a2d7685bcc354bdd_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsMember</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="iafd019a04c294eb9b38b19f3a4b4e49f_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">appf:A2016PerformanceMetricMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i7135702889054051b650f307ee947896_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i230571d2508e457e8827faf8a862be19_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsGrantedin2019Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ie9950d2e74804d0ca847c54c886bed89_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsGrantedin2018Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i5b9a767206d24226b594e699c010c7dd_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsGrantedin2019and2018Member</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="ibf610a2cad524f9aae9a0350522654f5_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsGrantedin2019and2018Member</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="i75b755e3278244d7a45ede24ced94bb7_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsGrantedin2019and2018Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheThreeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i097807896b5441218874897d2974c0ea_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsGrantedin2019and2018Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i815f844a27394208bed6e807911fba9d_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsGrantedin2019and2018Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i091b6e47073340c4a614455889151648_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsGrantedin2019and2018Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i33ced037467841c095de718193b884c7_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsGrantedin2019and2018Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheOneMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i4be262ef22eb49f0b6bae988c591d0eb_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsGrantedin2019and2018Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheOneMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="iea0b999a93144a26abf77107d3808e2b_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsGrantedin2019and2018Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i5f352c5f20f94c8aa56aae90523e9892_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsGrantedin2019and2018Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ie0151233bc0447fa88f5fa2684960e5a_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:RestrictedStockUnitsAndPerformanceStockUnitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i35c4418faaa14a79b23a2cd2c7b2b434_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:RestrictedStockUnitsAndPerformanceStockUnitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i6dc94e99757f4efe807c08d12dcb5eaf_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="ic8750d7d40ba425a884083a933e676c7_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i23d98b4f05bb4bca84eb98f630a8addd_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ib7ee5461abdf4bedbe15c2460cf8b782_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ifeb3fb87ab7a4cd1941bfb8991467ea9_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i70c9259d55f74d20951c3ce8ee22b950_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DisposalGroupClassificationAxis">us-gaap:DiscontinuedOperationsDisposedOfBySaleMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis">appf:MyCaseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="if0c6336a8b284bd7b3c58ea15b32829c_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:DomesticCountryMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ifbb35241961348a7906632a948d86917_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:StateAndLocalJurisdictionMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:TaxCreditCarryforwardAxis">us-gaap:ResearchMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i01390a6a12cd445db158cda4169a39a6_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:DomesticCountryMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:TaxCreditCarryforwardAxis">us-gaap:ResearchMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i49f21b866a974cb5af0d88082667c437_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">appf:CoreSolutionsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i155f8f7267774e7b8044097d9d108b30_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">appf:CoreSolutionsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="id161bac78060432b9f1bbad8354f0fb4_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">appf:CoreSolutionsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i3f25746ecdf4470094faade647b145f8_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">appf:ValuePlusServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ia3851c5bdd1e4f21ac815c345ef884a4_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">appf:ValuePlusServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i6ab43607928b4eb6bcf22addd709f5ed_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">appf:ValuePlusServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i7f3b18600ba9494fa92c6810bc520195_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">appf:OtherServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i85640fb3a94a495c8f1c47eee8c9965e_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">appf:OtherServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i8254a32400ed4a55a4959493198ce754_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">appf:OtherServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-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="segment">
        <measure>appf:segment</measure>
    </unit>
    <unit id="reportingunit">
        <measure>appf:reportingUnit</measure>
    </unit>
    <unit id="sqft">
        <measure>utr:sqft</measure>
    </unit>
    <unit id="vote">
        <measure>appf:vote</measure>
    </unit>
    <unit id="director">
        <measure>appf:director</measure>
    </unit>
    <dei:EntityCentralIndexKey
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV80L2ZyYWc6NDM1MmU5ZDZkZjYzNDUwMjk2OGQwMGUyNGIwYjgzZDEvdGFibGU6OTM1MDBjNThlOWVlNDdiN2IxOTRkY2M5ODZlMWI0Y2MvdGFibGVyYW5nZTo5MzUwMGM1OGU5ZWU0N2I3YjE5NGRjYzk4NmUxYjRjY18xLTEtMS0xLTA_490142c9-f261-4b27-9a0e-1fd134a56a47">0001433195</dei:EntityCentralIndexKey>
    <dei:DocumentFiscalYearFocus
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV80L2ZyYWc6NDM1MmU5ZDZkZjYzNDUwMjk2OGQwMGUyNGIwYjgzZDEvdGFibGU6OTM1MDBjNThlOWVlNDdiN2IxOTRkY2M5ODZlMWI0Y2MvdGFibGVyYW5nZTo5MzUwMGM1OGU5ZWU0N2I3YjE5NGRjYzk4NmUxYjRjY18zLTEtMS0xLTA_ebe3596b-2370-47cd-b1ce-5546ab1e27bd">2020</dei:DocumentFiscalYearFocus>
    <dei:DocumentFiscalPeriodFocus
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV80L2ZyYWc6NDM1MmU5ZDZkZjYzNDUwMjk2OGQwMGUyNGIwYjgzZDEvdGFibGU6OTM1MDBjNThlOWVlNDdiN2IxOTRkY2M5ODZlMWI0Y2MvdGFibGVyYW5nZTo5MzUwMGM1OGU5ZWU0N2I3YjE5NGRjYzk4NmUxYjRjY180LTEtMS0xLTA_a605e808-8aa0-40ef-a95c-2fb38d033c49">FY</dei:DocumentFiscalPeriodFocus>
    <dei:AmendmentFlag
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV80L2ZyYWc6NDM1MmU5ZDZkZjYzNDUwMjk2OGQwMGUyNGIwYjgzZDEvdGFibGU6OTM1MDBjNThlOWVlNDdiN2IxOTRkY2M5ODZlMWI0Y2MvdGFibGVyYW5nZTo5MzUwMGM1OGU5ZWU0N2I3YjE5NGRjYzk4NmUxYjRjY181LTEtMS0xLTA_001c0d9f-8419-4975-8c22-4308cc982516">false</dei:AmendmentFlag>
    <us-gaap:AccountingStandardsUpdateExtensibleList
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTQtMC0xLTEtMzUzL3RleHRyZWdpb246ODU2Mzc3ZmZlY2Q3NDRlZWE1YjE5MWFkZDI0Y2FlYzdfMTA5OTUxMTYyNzg1OA_e452efe7-800b-4889-964f-c6adaf181165">us-gaap:AccountingStandardsUpdate201409Member</us-gaap:AccountingStandardsUpdateExtensibleList>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="i14bdef26eb4144e79975801988ed103a_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMjk4OTM_373b3e65-6783-4f52-baa6-3662f8cea7f0">P4Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:LesseeOperatingLeaseTermOfContract
      contextRef="ic80291bbc9284c33abd9f2325ed5ec7f_I20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90ZXh0cmVnaW9uOjRmZWFmMzc3ZWMxODRiNDJiOGMwMjllYjhlMTQ2NDE0XzY1OTcwNjk3Njk0Mzg_e13e4af0-ccec-4e1a-a2d9-ac59fdda846f">P1Y</us-gaap:LesseeOperatingLeaseTermOfContract>
    <us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTo5Y2E5ZmRlZWVmMDA0ZDBhYWU2NjFlYmEwYzExZTFkMC90YWJsZXJhbmdlOjljYTlmZGVlZWYwMDRkMGFhZTY2MWViYTBjMTFlMWQwXzUtMC0xLTEtMA_bdd3abe6-1716-4452-b1db-b9e30870ccde">us-gaap:OtherLiabilitiesCurrent</us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList>
    <us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTo5Y2E5ZmRlZWVmMDA0ZDBhYWU2NjFlYmEwYzExZTFkMC90YWJsZXJhbmdlOjljYTlmZGVlZWYwMDRkMGFhZTY2MWViYTBjMTFlMWQwXzUtMC0xLTEtMA_ebaea08b-e067-4426-8fbb-59b570f8f199">us-gaap:OtherLiabilitiesCurrent</us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList>
    <dei:DocumentType
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGV4dHJlZ2lvbjoxYzdjNWEzY2RhN2M0YWUxOTk1ZDFkMTc3ZTZmMGNhNl80NzAz_0edff0a5-867d-43e3-aa4d-af591a29b3f6">10-K</dei:DocumentType>
    <dei:DocumentAnnualReport
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGV4dHJlZ2lvbjoxYzdjNWEzY2RhN2M0YWUxOTk1ZDFkMTc3ZTZmMGNhNl80Njk3_a8db5c6f-3b1b-41f7-a7e7-c4d2bf78667f">true</dei:DocumentAnnualReport>
    <dei:DocumentPeriodEndDate
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGV4dHJlZ2lvbjoxYzdjNWEzY2RhN2M0YWUxOTk1ZDFkMTc3ZTZmMGNhNl8yNDU_d81c1ca3-e96c-41df-8a1e-2f10bed99354">2020-12-31</dei:DocumentPeriodEndDate>
    <dei:CurrentFiscalYearEndDate
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGV4dHJlZ2lvbjoxYzdjNWEzY2RhN2M0YWUxOTk1ZDFkMTc3ZTZmMGNhNl8yNDU_afd6710e-041e-4c6e-991b-571ba0157d68">--12-31</dei:CurrentFiscalYearEndDate>
    <dei:DocumentTransitionReport
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGV4dHJlZ2lvbjoxYzdjNWEzY2RhN2M0YWUxOTk1ZDFkMTc3ZTZmMGNhNl80NzA0_92385d46-365a-47cf-a1a2-75bbdcbc650e">false</dei:DocumentTransitionReport>
    <dei:EntityFileNumber
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGV4dHJlZ2lvbjoxYzdjNWEzY2RhN2M0YWUxOTk1ZDFkMTc3ZTZmMGNhNl80Njk4_fd12674b-551c-48ef-9b1a-0b331e34f6a1">001-37468</dei:EntityFileNumber>
    <dei:EntityRegistrantName
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGV4dHJlZ2lvbjoxYzdjNWEzY2RhN2M0YWUxOTk1ZDFkMTc3ZTZmMGNhNl80NzA1_ad706d9e-c82e-44cb-bd07-f782d85f2a79">AppFolio, Inc.</dei:EntityRegistrantName>
    <dei:EntityIncorporationStateCountryCode
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGFibGU6MzJhNDg4YzlkYjkzNDI0YmFmMzQyYjUzM2IzOWYwMzUvdGFibGVyYW5nZTozMmE0ODhjOWRiOTM0MjRiYWYzNDJiNTMzYjM5ZjAzNV8wLTAtMS0xLTA_db335a80-61fb-4dcd-9db4-e6c72bbe52a2">DE</dei:EntityIncorporationStateCountryCode>
    <dei:EntityTaxIdentificationNumber
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGFibGU6MzJhNDg4YzlkYjkzNDI0YmFmMzQyYjUzM2IzOWYwMzUvdGFibGVyYW5nZTozMmE0ODhjOWRiOTM0MjRiYWYzNDJiNTMzYjM5ZjAzNV8wLTQtMS0xLTA_e1b6af94-3632-4966-8ee4-061f3f63d7d5">26-0359894</dei:EntityTaxIdentificationNumber>
    <dei:EntityAddressAddressLine1
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGFibGU6MzJhNDg4YzlkYjkzNDI0YmFmMzQyYjUzM2IzOWYwMzUvdGFibGVyYW5nZTozMmE0ODhjOWRiOTM0MjRiYWYzNDJiNTMzYjM5ZjAzNV8zLTAtMS0xLTA_f74ee5c5-a092-4df8-bb7f-9dd7d1c247c7">50 Castilian Drive</dei:EntityAddressAddressLine1>
    <dei:EntityAddressCityOrTown
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGFibGU6MzJhNDg4YzlkYjkzNDI0YmFmMzQyYjUzM2IzOWYwMzUvdGFibGVyYW5nZTozMmE0ODhjOWRiOTM0MjRiYWYzNDJiNTMzYjM5ZjAzNV80LTAtMS0xLTA_1b7b1c05-e0db-4036-af3a-78c4dfaf66ab">Santa Barbara,</dei:EntityAddressCityOrTown>
    <dei:EntityAddressStateOrProvince
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGFibGU6MzJhNDg4YzlkYjkzNDI0YmFmMzQyYjUzM2IzOWYwMzUvdGFibGVyYW5nZTozMmE0ODhjOWRiOTM0MjRiYWYzNDJiNTMzYjM5ZjAzNV80LTItMS0xLTA_ecaa15d1-eb22-45e0-b88c-4c7837583877">CA</dei:EntityAddressStateOrProvince>
    <dei:EntityAddressPostalZipCode
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGFibGU6MzJhNDg4YzlkYjkzNDI0YmFmMzQyYjUzM2IzOWYwMzUvdGFibGVyYW5nZTozMmE0ODhjOWRiOTM0MjRiYWYzNDJiNTMzYjM5ZjAzNV80LTQtMS0xLTA_8b8a5e20-17e8-4af3-ad9b-23378c28f767">93117</dei:EntityAddressPostalZipCode>
    <dei:CityAreaCode
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGV4dHJlZ2lvbjoxYzdjNWEzY2RhN2M0YWUxOTk1ZDFkMTc3ZTZmMGNhNl80NzAw_d067e456-c041-40ce-8789-7cc60907881f">805</dei:CityAreaCode>
    <dei:LocalPhoneNumber
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGV4dHJlZ2lvbjoxYzdjNWEzY2RhN2M0YWUxOTk1ZDFkMTc3ZTZmMGNhNl80Njk5_ca8964ac-913e-44e3-bdd9-bfd443533060">364-6093</dei:LocalPhoneNumber>
    <dei:Security12bTitle
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGFibGU6NzQ5NjAwODRlYzNlNDc4YmIyZDE2NzRkMzBlNGYxN2EvdGFibGVyYW5nZTo3NDk2MDA4NGVjM2U0NzhiYjJkMTY3NGQzMGU0ZjE3YV8xLTAtMS0xLTA_443064fe-3c38-40e4-97fd-a58aae19d2de">Class A common stock, par value $0.0001 per share</dei:Security12bTitle>
    <dei:TradingSymbol
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGFibGU6NzQ5NjAwODRlYzNlNDc4YmIyZDE2NzRkMzBlNGYxN2EvdGFibGVyYW5nZTo3NDk2MDA4NGVjM2U0NzhiYjJkMTY3NGQzMGU0ZjE3YV8xLTItMS0xLTA_37d3f937-93b4-4f28-8eb2-642488d672dd">APPF</dei:TradingSymbol>
    <dei:SecurityExchangeName
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGFibGU6NzQ5NjAwODRlYzNlNDc4YmIyZDE2NzRkMzBlNGYxN2EvdGFibGVyYW5nZTo3NDk2MDA4NGVjM2U0NzhiYjJkMTY3NGQzMGU0ZjE3YV8xLTQtMS0xLTA_13a5c1a1-0803-44cb-a54c-b0d90cde0fa2">NASDAQ</dei:SecurityExchangeName>
    <dei:EntityWellKnownSeasonedIssuer
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGV4dHJlZ2lvbjoxYzdjNWEzY2RhN2M0YWUxOTk1ZDFkMTc3ZTZmMGNhNl80NzAx_13255fe2-af2f-457e-9bfa-b8a1a6ec2a30">Yes</dei:EntityWellKnownSeasonedIssuer>
    <dei:EntityVoluntaryFilers
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGV4dHJlZ2lvbjoxYzdjNWEzY2RhN2M0YWUxOTk1ZDFkMTc3ZTZmMGNhNl80Njk0_5e3620c5-b704-4b42-b833-3c35c2c104cf">No</dei:EntityVoluntaryFilers>
    <dei:EntityCurrentReportingStatus
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGV4dHJlZ2lvbjoxYzdjNWEzY2RhN2M0YWUxOTk1ZDFkMTc3ZTZmMGNhNl80NzAy_53e31a86-b1a9-418f-8c36-f8b521cd5029">Yes</dei:EntityCurrentReportingStatus>
    <dei:EntityInteractiveDataCurrent
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGV4dHJlZ2lvbjoxYzdjNWEzY2RhN2M0YWUxOTk1ZDFkMTc3ZTZmMGNhNl80Njk1_d5e4b3b5-e067-4fe4-aa74-02bc00e3c80d">Yes</dei:EntityInteractiveDataCurrent>
    <dei:EntityFilerCategory
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGFibGU6MzdkNGQ4ZWI5MjQwNDA5Njg3MzIzNTJmZTEyOGU4ZWQvdGFibGVyYW5nZTozN2Q0ZDhlYjkyNDA0MDk2ODczMjM1MmZlMTI4ZThlZF8wLTAtMS0xLTA_7f2d2823-fc5a-4e66-a2c1-dce4c6c34e0d">Large Accelerated Filer</dei:EntityFilerCategory>
    <dei:EntitySmallBusiness
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGFibGU6MzdkNGQ4ZWI5MjQwNDA5Njg3MzIzNTJmZTEyOGU4ZWQvdGFibGVyYW5nZTozN2Q0ZDhlYjkyNDA0MDk2ODczMjM1MmZlMTI4ZThlZF8yLTUtMS0xLTA_bb317f89-8ac4-484f-976f-20aee292b7f5">false</dei:EntitySmallBusiness>
    <dei:EntityEmergingGrowthCompany
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGFibGU6MzdkNGQ4ZWI5MjQwNDA5Njg3MzIzNTJmZTEyOGU4ZWQvdGFibGVyYW5nZTozN2Q0ZDhlYjkyNDA0MDk2ODczMjM1MmZlMTI4ZThlZF80LTUtMS0xLTA_92ca4f79-ab4b-4591-99c8-999bde155a5a">false</dei:EntityEmergingGrowthCompany>
    <dei:IcfrAuditorAttestationFlag
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGV4dHJlZ2lvbjoxYzdjNWEzY2RhN2M0YWUxOTk1ZDFkMTc3ZTZmMGNhNl82NTk3MDY5NzcxNzM3_e485d4eb-fcad-4632-a24a-49cf63957793">true</dei:IcfrAuditorAttestationFlag>
    <dei:EntityShellCompany
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGV4dHJlZ2lvbjoxYzdjNWEzY2RhN2M0YWUxOTk1ZDFkMTc3ZTZmMGNhNl80Njk2_1edbba23-7697-431f-bd06-9fda06243610">false</dei:EntityShellCompany>
    <dei:EntityPublicFloat
      contextRef="i8e1be9b2d93544ec85d1e51b09118311_I20200630"
      decimals="-6"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGV4dHJlZ2lvbjoxYzdjNWEzY2RhN2M0YWUxOTk1ZDFkMTc3ZTZmMGNhNl8yODY0_4f863c91-13b0-4153-9210-123ff9935a0f"
      unitRef="usd">2870000000</dei:EntityPublicFloat>
    <dei:EntityCommonStockSharesOutstanding
      contextRef="ied1dd92e7f9246c1a45a4070cdcbc58e_I20210215"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGV4dHJlZ2lvbjoxYzdjNWEzY2RhN2M0YWUxOTk1ZDFkMTc3ZTZmMGNhNl8zNDUx_23449625-adb3-49da-94db-e81647714abf"
      unitRef="shares">18747460</dei:EntityCommonStockSharesOutstanding>
    <dei:EntityCommonStockSharesOutstanding
      contextRef="ia6b2b6fa1d72456ba9f14cec344608ab_I20210215"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGV4dHJlZ2lvbjoxYzdjNWEzY2RhN2M0YWUxOTk1ZDFkMTc3ZTZmMGNhNl8zNTM2_a545a2b9-86e5-4117-9d00-23cab83960f4"
      unitRef="shares">15650311</dei:EntityCommonStockSharesOutstanding>
    <dei:DocumentsIncorporatedByReferenceTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xL2ZyYWc6MWM3YzVhM2NkYTdjNGFlMTk5NWQxZDE3N2U2ZjBjYTYvdGV4dHJlZ2lvbjoxYzdjNWEzY2RhN2M0YWUxOTk1ZDFkMTc3ZTZmMGNhNl82NTk3MDY5NzcxNzUz_62d520e1-5448-49f1-93c9-5f513e7930a0">Portions of the registrant&#x2019;s definitive Proxy Statement for the 2021 Annual Meeting of Stockholders (the &#x201c;Proxy Statement&#x201d;), to be filed with the Securities and Exchange Commission (the &#x201c;SEC&#x201d;) pursuant to Regulation 14A not later than 120 days after the end of the fiscal year covered by this Annual Report on Form&#160;10-K (this &#x201c;Annual Report&#x201d;), are incorporated by reference in Part&#160;III, Items 10-14 of this Annual Report. Except for the portions of the Proxy Statement specifically incorporated by reference in this Annual Report, the Proxy Statement shall not be deemed to be filed as part hereof.</dei:DocumentsIncorporatedByReferenceTextBlock>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfNC0yLTEtMS0w_b304d549-6eca-4b13-89dc-334391ade645"
      unitRef="usd">140263000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfNC00LTEtMS0w_52ba2822-099f-4dbd-87cd-c8ab792337bc"
      unitRef="usd">15813000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfNS0yLTEtMS0w_c2aca5b1-13d4-405c-bb59-401fa418f42a"
      unitRef="usd">28256000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfNS00LTEtMS0w_ced05b0f-88ec-48e0-ba65-96e200033b6b"
      unitRef="usd">22876000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfNi0yLTEtMS0w_500c9fd8-acf7-4592-9972-7e7fce267f95"
      unitRef="usd">10057000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfNi00LTEtMS0w_da4e7929-2318-4664-becc-5e8f19e4c802"
      unitRef="usd">7562000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfNy0yLTEtMS0w_446b64dd-b3c9-4f77-bce3-1d8d56beaa8c"
      unitRef="usd">20777000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfNy00LTEtMS0w_53c26033-6e6a-4157-9c5a-a39ab988eb3d"
      unitRef="usd">15540000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfOC0yLTEtMS0w_f780bc2e-9a9f-4f71-92f5-4340e9ca2385"
      unitRef="usd">199353000</us-gaap:AssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfOC00LTEtMS0w_faf51753-45e8-4de9-a3aa-d5078517999f"
      unitRef="usd">61791000</us-gaap:AssetsCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfOS0yLTEtMS0w_f7d39c41-b173-40c6-af8d-74683d62143f"
      unitRef="usd">6770000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfOS00LTEtMS0w_20314669-a171-4018-8c10-6a9ec65a7543"
      unitRef="usd">12089000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMTAtMi0xLTEtMA_7de0b4a0-da1b-4645-92fa-3637213fb324"
      unitRef="usd">26439000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMTAtNC0xLTEtMA_57be088c-af5e-4a28-8556-9ad4570487fb"
      unitRef="usd">14744000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMTEtMi0xLTEtMA_207ad054-20f5-45e4-a307-7954a4a5d19a"
      unitRef="usd">30561000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMTEtNC0xLTEtMA_72eb617b-81bb-4d38-a2df-a8c7c7e20876"
      unitRef="usd">27803000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:CapitalizedComputerSoftwareNet
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMTItMi0xLTEtMA_8ed37eae-97a5-4b85-a282-06f0376c0ff9"
      unitRef="usd">35459000</us-gaap:CapitalizedComputerSoftwareNet>
    <us-gaap:CapitalizedComputerSoftwareNet
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMTItNC0xLTEtMA_b863ea1f-d701-4840-9cbe-5d6c30c4568b"
      unitRef="usd">30023000</us-gaap:CapitalizedComputerSoftwareNet>
    <us-gaap:Goodwill
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMTMtMi0xLTEtMA_5792e391-9f03-4782-9904-6f974007a8fd"
      unitRef="usd">56147000</us-gaap:Goodwill>
    <us-gaap:Goodwill
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMTMtNC0xLTEtMA_5ca4b557-9644-44aa-a85c-15978e830442"
      unitRef="usd">58425000</us-gaap:Goodwill>
    <us-gaap:IntangibleAssetsNetExcludingGoodwill
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMTQtMi0xLTEtMA_009e2827-f492-470e-b83b-da9e46e170a2"
      unitRef="usd">16357000</us-gaap:IntangibleAssetsNetExcludingGoodwill>
    <us-gaap:IntangibleAssetsNetExcludingGoodwill
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMTQtNC0xLTEtMA_ec235741-9e30-454d-b144-fd9b882b4490"
      unitRef="usd">21377000</us-gaap:IntangibleAssetsNetExcludingGoodwill>
    <us-gaap:DeferredIncomeTaxAssetsNet
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMTUtMi0xLTEtMA_b91de538-27d2-4fd8-a5b7-2411b7875916"
      unitRef="usd">12181000</us-gaap:DeferredIncomeTaxAssetsNet>
    <us-gaap:DeferredIncomeTaxAssetsNet
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMTUtNC0xLTEtMA_b79ee6f7-f21f-4d84-b6ca-3791146517e2"
      unitRef="usd">27574000</us-gaap:DeferredIncomeTaxAssetsNet>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMTYtMi0xLTEtMA_6eeebbff-e7df-4037-b0aa-b4d4a5973723"
      unitRef="usd">6213000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMTYtNC0xLTEtMA_63573067-8887-41df-b60b-53c13709f24e"
      unitRef="usd">6276000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:Assets
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMTctMi0xLTEtMA_890ff259-d741-4ac4-bbe4-f8cab95e17de"
      unitRef="usd">389480000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMTctNC0xLTEtMA_0c8fd11a-a2ce-4b5c-b2f8-2a11c4f37b2a"
      unitRef="usd">260102000</us-gaap:Assets>
    <us-gaap:AccountsPayableCurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMjAtMi0xLTEtMA_a5a0dbdc-0a06-492b-8525-c079c060933c"
      unitRef="usd">1040000</us-gaap:AccountsPayableCurrent>
    <us-gaap:AccountsPayableCurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMjAtNC0xLTEtMA_cf1d438e-ee26-4791-a036-3f1f8b23fd72"
      unitRef="usd">1927000</us-gaap:AccountsPayableCurrent>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMjEtMi0xLTEtMA_c5e33107-e5a5-46d5-9617-a81084dba392"
      unitRef="usd">18888000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMjEtNC0xLTEtMA_1f06f187-1733-406f-8793-25c8d8d190da"
      unitRef="usd">17758000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMjItMi0xLTEtMA_6ea6df8a-b5f5-4ec5-ab54-27dd41a62b27"
      unitRef="usd">14069000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMjItNC0xLTEtMA_c799c963-ee49-48ee-9458-6275884c2fca"
      unitRef="usd">10833000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMjMtMi0xLTEtMA_a08c1f6c-c0ec-4898-8252-c6a8a8973e66"
      unitRef="usd">2262000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMjMtNC0xLTEtMA_1b5361d4-6b02-43c4-bc9d-d737765e656e"
      unitRef="usd">4600000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:TaxesPayableCurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMjQtMi0xLTEtMzI2_a151f931-973d-40a4-8b75-249d0019afbd"
      unitRef="usd">9095000</us-gaap:TaxesPayableCurrent>
    <us-gaap:TaxesPayableCurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMjQtNC0xLTEtMzI5_ea42d7e7-73c1-4a65-b709-213ea3e97a92"
      unitRef="usd">0</us-gaap:TaxesPayableCurrent>
    <us-gaap:OtherLiabilitiesCurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMjQtMi0xLTEtMA_ea651e7d-380a-46a9-a2b4-e266b2093955"
      unitRef="usd">4451000</us-gaap:OtherLiabilitiesCurrent>
    <us-gaap:OtherLiabilitiesCurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMjQtNC0xLTEtMA_7d71c3a8-f3b2-47be-8956-b961d00ba93f"
      unitRef="usd">11139000</us-gaap:OtherLiabilitiesCurrent>
    <us-gaap:LongTermDebtCurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMjUtMi0xLTEtMA_8d0ff54f-5d99-4d31-bc4e-54df4a95b5fa"
      unitRef="usd">0</us-gaap:LongTermDebtCurrent>
    <us-gaap:LongTermDebtCurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMjUtNC0xLTEtMA_d226b4d6-acf9-4a4e-b964-fd37514b2a27"
      unitRef="usd">1208000</us-gaap:LongTermDebtCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMjYtMi0xLTEtMA_2d00ea06-fcd4-4aa8-abbe-b434574a7c6c"
      unitRef="usd">49805000</us-gaap:LiabilitiesCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMjYtNC0xLTEtMA_daaa881a-2dcd-4192-9821-56e9de1d6300"
      unitRef="usd">47465000</us-gaap:LiabilitiesCurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMjctMi0xLTEtMA_bd3ceb87-94e6-43cf-8d89-0ff11abf8084"
      unitRef="usd">40146000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMjctNC0xLTEtMA_5fd72a9d-8b12-49c4-b613-017a36e96d6e"
      unitRef="usd">33312000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:SecuredLongTermDebt
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMjktMi0xLTEtMA_0f43b6d3-42af-45cb-ab20-a8d1bcfd7d4e"
      unitRef="usd">0</us-gaap:SecuredLongTermDebt>
    <us-gaap:SecuredLongTermDebt
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMjktNC0xLTEtMA_d249f32f-f75e-402d-a4d7-9d3a7b25cd68"
      unitRef="usd">47375000</us-gaap:SecuredLongTermDebt>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzAtMi0xLTEtMzE0_f399a375-0e0f-4567-845c-85157b1872a1"
      unitRef="usd">13609000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzAtNC0xLTEtMzE4_3d860090-3ba0-4ba7-a13c-fc92575d24b7"
      unitRef="usd">0</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:Liabilities
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzAtMi0xLTEtMA_f3af2120-2ba5-4f93-889a-ae49f494962b"
      unitRef="usd">103560000</us-gaap:Liabilities>
    <us-gaap:Liabilities
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzAtNC0xLTEtMA_14803e52-0025-432d-a8f2-cae3449f0f9b"
      unitRef="usd">128152000</us-gaap:Liabilities>
    <us-gaap:CommitmentsAndContingencies
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzEtMi0xLTEtMA_beab874c-e6a5-4523-8b05-f7f4fd60c45f"
      unitRef="usd"
      xsi:nil="true"/>
    <us-gaap:CommitmentsAndContingencies
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzEtNC0xLTEtMA_5b0bd7cc-0676-40fc-bba4-94ef037e61ef"
      unitRef="usd"
      xsi:nil="true"/>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzMtMC0xLTEtMC90ZXh0cmVnaW9uOmE3Y2NkMDI3YjhlNzQzMzI4YWY4MTdiYjA3Nzg2ZmJhXzEwOTk1MTE2Mjc5MzQ_108284c6-cd82-4453-8666-e2c61197b073"
      unitRef="usdPerShare">0.0001</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzMtMC0xLTEtMC90ZXh0cmVnaW9uOmE3Y2NkMDI3YjhlNzQzMzI4YWY4MTdiYjA3Nzg2ZmJhXzEwOTk1MTE2Mjc5MzQ_f29a97cf-0c43-4201-85ea-d44b6506526d"
      unitRef="usdPerShare">0.0001</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzMtMC0xLTEtMC90ZXh0cmVnaW9uOmE3Y2NkMDI3YjhlNzQzMzI4YWY4MTdiYjA3Nzg2ZmJhXzEwOTk1MTE2Mjc5NDc_1f85c93a-7e00-4159-bbc3-1637f52b6921"
      unitRef="shares">25000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzMtMC0xLTEtMC90ZXh0cmVnaW9uOmE3Y2NkMDI3YjhlNzQzMzI4YWY4MTdiYjA3Nzg2ZmJhXzEwOTk1MTE2Mjc5NDc_f25a4355-ac39-4531-a2a6-b4fffce44bda"
      unitRef="shares">25000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesIssued
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzMtMC0xLTEtMC90ZXh0cmVnaW9uOmE3Y2NkMDI3YjhlNzQzMzI4YWY4MTdiYjA3Nzg2ZmJhXzEwOTk1MTE2Mjc5NTI_1ded1ba8-7979-4a68-ad95-5fb7c1067b56"
      unitRef="shares">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzMtMC0xLTEtMC90ZXh0cmVnaW9uOmE3Y2NkMDI3YjhlNzQzMzI4YWY4MTdiYjA3Nzg2ZmJhXzEwOTk1MTE2Mjc5NTI_86e2ad0e-6c43-4003-92c0-11053b535a33"
      unitRef="shares">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzMtMC0xLTEtMC90ZXh0cmVnaW9uOmE3Y2NkMDI3YjhlNzQzMzI4YWY4MTdiYjA3Nzg2ZmJhXzEwOTk1MTE2Mjc5NTI_94064f48-c3ad-44ac-8f27-a2bca0b75f2b"
      unitRef="shares">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:PreferredStockSharesIssued
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzMtMC0xLTEtMC90ZXh0cmVnaW9uOmE3Y2NkMDI3YjhlNzQzMzI4YWY4MTdiYjA3Nzg2ZmJhXzEwOTk1MTE2Mjc5NTI_b71c357d-e43e-422f-b712-704d71219199"
      unitRef="shares">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockValue
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzMtMi0xLTEtMA_2900cc80-98bd-4f85-ae4b-bfb89753c79c"
      unitRef="usd">0</us-gaap:PreferredStockValue>
    <us-gaap:PreferredStockValue
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzMtNC0xLTEtMA_6da82afb-9ab6-4993-894c-e172858a24cf"
      unitRef="usd">0</us-gaap:PreferredStockValue>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="ibe4381ea556a4f5dbfe309a4824185d7_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzQtMC0xLTEtMC90ZXh0cmVnaW9uOmZlYTBhYTYxODc3NjQ0NzFhZDk4ZDNlNmZiMDYzNWM2XzEwOTk1MTE2MjgyMTA_133106f5-908c-4b08-bac4-670e3224e59f"
      unitRef="usdPerShare">0.0001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i696bcdd341204f7e81923e221017f98a_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzQtMC0xLTEtMC90ZXh0cmVnaW9uOmZlYTBhYTYxODc3NjQ0NzFhZDk4ZDNlNmZiMDYzNWM2XzEwOTk1MTE2MjgyMTA_172e1090-413a-4af7-a6e9-09a73398fef2"
      unitRef="usdPerShare">0.0001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="ibe4381ea556a4f5dbfe309a4824185d7_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzQtMC0xLTEtMC90ZXh0cmVnaW9uOmZlYTBhYTYxODc3NjQ0NzFhZDk4ZDNlNmZiMDYzNWM2XzEwOTk1MTE2MjgyMjA_c6c63650-8d7f-47e3-984b-8fd32f38531c"
      unitRef="shares">250000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i696bcdd341204f7e81923e221017f98a_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzQtMC0xLTEtMC90ZXh0cmVnaW9uOmZlYTBhYTYxODc3NjQ0NzFhZDk4ZDNlNmZiMDYzNWM2XzEwOTk1MTE2MjgyMjA_d84aa6e8-ecf6-426d-8902-bb53c4affa4f"
      unitRef="shares">250000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesIssued
      contextRef="ibe4381ea556a4f5dbfe309a4824185d7_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzQtMC0xLTEtMC90ZXh0cmVnaW9uOmZlYTBhYTYxODc3NjQ0NzFhZDk4ZDNlNmZiMDYzNWM2XzEwOTk1MTE2MjgyMjk_6652ec35-3f61-498f-a28f-e3aac9675f0a"
      unitRef="shares">19148000</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesIssued
      contextRef="i696bcdd341204f7e81923e221017f98a_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzQtMC0xLTEtMC90ZXh0cmVnaW9uOmZlYTBhYTYxODc3NjQ0NzFhZDk4ZDNlNmZiMDYzNWM2XzEwOTk1MTE2MjgyMzg_8340f7cd-1616-4469-a5b7-ed3ef6c3c838"
      unitRef="shares">16923000</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="ibe4381ea556a4f5dbfe309a4824185d7_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzQtMC0xLTEtMC90ZXh0cmVnaW9uOmZlYTBhYTYxODc3NjQ0NzFhZDk4ZDNlNmZiMDYzNWM2XzEwOTk1MTE2MjgyNDc_8ec9fa53-9457-4c14-86df-78346cb181bf"
      unitRef="shares">18729000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i696bcdd341204f7e81923e221017f98a_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzQtMC0xLTEtMC90ZXh0cmVnaW9uOmZlYTBhYTYxODc3NjQ0NzFhZDk4ZDNlNmZiMDYzNWM2XzEwOTk1MTE2MjgyNTY_02bcd4b9-5b98-4e76-9c2e-e8a6b59be3a1"
      unitRef="shares">16552000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockValue
      contextRef="ibe4381ea556a4f5dbfe309a4824185d7_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzQtMi0xLTEtMA_87874676-981b-4f4d-b3b2-8e3dfd323397"
      unitRef="usd">2000</us-gaap:CommonStockValue>
    <us-gaap:CommonStockValue
      contextRef="i696bcdd341204f7e81923e221017f98a_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzQtNC0xLTEtMA_479c233d-d822-49bd-b3ab-0b81d57cb829"
      unitRef="usd">2000</us-gaap:CommonStockValue>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="ie8df2e081bbc447b804c96643bebb2b1_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzUtMC0xLTEtMC90ZXh0cmVnaW9uOjMxZGMzZTVhYWMyNTQ1ZTBhNTMzMTZkOTlmN2RlNzMxXzEwOTk1MTE2MjgwODY_9344e861-955e-42c0-976c-6ec92d86ea21"
      unitRef="usdPerShare">0.0001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="iff665478529c4a5cbc4d81477e18f1cd_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzUtMC0xLTEtMC90ZXh0cmVnaW9uOjMxZGMzZTVhYWMyNTQ1ZTBhNTMzMTZkOTlmN2RlNzMxXzEwOTk1MTE2MjgwODY_bd17c895-4d3b-404a-a46a-f21c35529fc4"
      unitRef="usdPerShare">0.0001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="iff665478529c4a5cbc4d81477e18f1cd_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzUtMC0xLTEtMC90ZXh0cmVnaW9uOjMxZGMzZTVhYWMyNTQ1ZTBhNTMzMTZkOTlmN2RlNzMxXzEwOTk1MTE2MjgwOTY_0001b926-cd9d-4dc7-9a3d-daaacea7ced5"
      unitRef="shares">50000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="ie8df2e081bbc447b804c96643bebb2b1_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzUtMC0xLTEtMC90ZXh0cmVnaW9uOjMxZGMzZTVhYWMyNTQ1ZTBhNTMzMTZkOTlmN2RlNzMxXzEwOTk1MTE2MjgwOTY_2283c938-a07c-4190-9013-0e2e604978f8"
      unitRef="shares">50000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesIssued
      contextRef="iff665478529c4a5cbc4d81477e18f1cd_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzUtMC0xLTEtMC90ZXh0cmVnaW9uOjMxZGMzZTVhYWMyNTQ1ZTBhNTMzMTZkOTlmN2RlNzMxXzEwOTk1MTE2MjgxMDU_d70348ff-97ed-4822-ab5e-e82ddb2e023a"
      unitRef="shares">15659000</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="iff665478529c4a5cbc4d81477e18f1cd_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzUtMC0xLTEtMC90ZXh0cmVnaW9uOjMxZGMzZTVhYWMyNTQ1ZTBhNTMzMTZkOTlmN2RlNzMxXzEwOTk1MTE2MjgxMDU_d83b9d05-d274-4728-9eba-1070dcde267b"
      unitRef="shares">15659000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockSharesIssued
      contextRef="ie8df2e081bbc447b804c96643bebb2b1_I20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzUtMC0xLTEtMC90ZXh0cmVnaW9uOjMxZGMzZTVhYWMyNTQ1ZTBhNTMzMTZkOTlmN2RlNzMxXzEwOTk1MTE2MjgxMTQ_af3c1139-eab4-47f0-985a-ef8ad68508ea"
      unitRef="shares">17594000</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="ie8df2e081bbc447b804c96643bebb2b1_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzUtMC0xLTEtMC90ZXh0cmVnaW9uOjMxZGMzZTVhYWMyNTQ1ZTBhNTMzMTZkOTlmN2RlNzMxXzEwOTk1MTE2MjgxMTQ_e42a42fb-ec17-4298-8b9c-47f2b9493254"
      unitRef="shares">17594000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockValue
      contextRef="iff665478529c4a5cbc4d81477e18f1cd_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzUtMi0xLTEtMA_74a8b4b7-aa8d-410c-965c-50888396fa5c"
      unitRef="usd">2000</us-gaap:CommonStockValue>
    <us-gaap:CommonStockValue
      contextRef="ie8df2e081bbc447b804c96643bebb2b1_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzUtNC0xLTEtMA_1a35fb07-6472-4561-9551-5d0c5450567d"
      unitRef="usd">2000</us-gaap:CommonStockValue>
    <us-gaap:AdditionalPaidInCapital
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzYtMi0xLTEtMA_f6fb482f-6635-48a9-a905-60fb61b7ca71"
      unitRef="usd">161247000</us-gaap:AdditionalPaidInCapital>
    <us-gaap:AdditionalPaidInCapital
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzYtNC0xLTEtMA_ca5851d4-e4f9-488a-9299-d314d8181e6f"
      unitRef="usd">161509000</us-gaap:AdditionalPaidInCapital>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzctMi0xLTEtMA_29673dec-db62-4d4a-b035-28de33d43acb"
      unitRef="usd">56000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzctNC0xLTEtMA_987a5d9b-ef16-4b45-93b1-c12229cd8156"
      unitRef="usd">33000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:TreasuryStockShares
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzgtMC0xLTEtMC90ZXh0cmVnaW9uOjY0NmI3ZjAyMTAwYzRhMDY4ZmRjZGM3ZjkwYWFkZGU5XzEwOTk1MTE2Mjc5NTA_f0562ee9-b3ce-4879-8e24-ffaf04988b65"
      unitRef="shares">419000</us-gaap:TreasuryStockShares>
    <us-gaap:TreasuryStockShares
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzgtMC0xLTEtMC90ZXh0cmVnaW9uOjY0NmI3ZjAyMTAwYzRhMDY4ZmRjZGM3ZjkwYWFkZGU5XzEwOTk1MTE2Mjc5NTY_f56b5ed0-7612-47ce-a7c4-4b64e24e41a4"
      unitRef="shares">371000</us-gaap:TreasuryStockShares>
    <us-gaap:TreasuryStockValue
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzgtMi0xLTEtMA_5a5f23f8-aa64-4bda-83cc-eb7297bb7433"
      unitRef="usd">25756000</us-gaap:TreasuryStockValue>
    <us-gaap:TreasuryStockValue
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzgtNC0xLTEtMA_7ea8dc84-60ec-4f4f-8e59-d9bb473ade39"
      unitRef="usd">21562000</us-gaap:TreasuryStockValue>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzktMi0xLTEtMA_d4c96ccc-9060-47f1-95a9-5b41035b4b50"
      unitRef="usd">150369000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfMzktNC0xLTEtMA_53e653d4-6fe7-45dc-ab83-db24ecb91830"
      unitRef="usd">-8034000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:StockholdersEquity
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfNDAtMi0xLTEtMA_4ea7ef25-2b1b-4f7e-91e4-3a4a48b5f9fd"
      unitRef="usd">285920000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfNDAtNC0xLTEtMA_0c4322ac-34c5-41e8-a866-2b3bc50fd39d"
      unitRef="usd">131950000</us-gaap:StockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfNDEtMi0xLTEtMA_94cab6b0-6549-4c1f-b27b-eb9dd93db0da"
      unitRef="usd">389480000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83My9mcmFnOmRhNzNkYTRhMzk2NTQxOGNiOTg1MDdmYTIwZTY5YTNkL3RhYmxlOmM3N2FlOTFjNThlNzRkMTc5ZmJhNjg4ZWUxMTZjNTM2L3RhYmxlcmFuZ2U6Yzc3YWU5MWM1OGU3NGQxNzlmYmE2ODhlZTExNmM1MzZfNDEtNC0xLTEtMA_a858845d-5de8-4393-8af6-cbb0e908d903"
      unitRef="usd">260102000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMi0xLTEtMS0w_02afe5cd-00fb-40e5-a3cd-fc83b6c58c0f"
      unitRef="usd">310056000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMi0zLTEtMS0w_3968601c-4828-487d-8b6b-ddbd994c7e0e"
      unitRef="usd">256012000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMi01LTEtMS0w_55214394-06b9-45de-9742-d749322d26aa"
      unitRef="usd">190071000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfNC0xLTEtMS0w_5fa7912b-9785-44c3-93a2-53a12281cc86"
      unitRef="usd">119029000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfNC0zLTEtMS0w_91f4dfb7-4a4c-43fe-bb54-75167641697d"
      unitRef="usd">101642000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfNC01LTEtMS0w_8463d024-339d-442e-a3bf-5191abc6497d"
      unitRef="usd">73549000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:SellingAndMarketingExpense
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfNS0xLTEtMS0w_9b85a68c-5c71-4fcf-b562-7d4b3f0309bc"
      unitRef="usd">58445000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:SellingAndMarketingExpense
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfNS0zLTEtMS0w_35d4ff8d-a494-4e75-b82b-65ac39caf073"
      unitRef="usd">51528000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:SellingAndMarketingExpense
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfNS01LTEtMS0w_d71138b2-3673-4db2-8bb6-29ac8df93a2d"
      unitRef="usd">33288000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfNi0xLTEtMS0w_2679449c-2b53-403a-9761-64371a763e7e"
      unitRef="usd">48529000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfNi0zLTEtMS0w_91ec843c-833d-4605-a38b-30f6762b5a16"
      unitRef="usd">39508000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfNi01LTEtMS0w_65c7c9dc-79bd-4269-9925-f301eb7b3784"
      unitRef="usd">24111000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfNy0xLTEtMS0w_679dcabc-3d9f-44da-86c8-cc4060e89298"
      unitRef="usd">47480000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfNy0zLTEtMS0w_5ca5f0a6-7d49-420d-876b-c4aee9723c2a"
      unitRef="usd">34478000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfNy01LTEtMS0w_c053bf1b-81d8-48bf-8f84-2bd89f03bb9e"
      unitRef="usd">24891000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfOC0xLTEtMS0w_1bbca884-52f0-4c81-99eb-6607eb567b9d"
      unitRef="usd">26790000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfOC0zLTEtMS0w_2f7d6abc-caa5-4743-ad61-ad67ac780f38"
      unitRef="usd">22395000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfOC01LTEtMS0w_5abf395c-f1ad-4f01-af81-b04e9d2bb0a3"
      unitRef="usd">14576000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:CostsAndExpenses
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfOS0xLTEtMS0w_0b63c00b-909b-4f96-8732-5c3ac37521c5"
      unitRef="usd">300273000</us-gaap:CostsAndExpenses>
    <us-gaap:CostsAndExpenses
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfOS0zLTEtMS0w_e5d47525-e487-422d-bddf-d1fecf92b5ae"
      unitRef="usd">249551000</us-gaap:CostsAndExpenses>
    <us-gaap:CostsAndExpenses
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfOS01LTEtMS0w_d3011cce-5fe4-459d-9ffe-ff329957d526"
      unitRef="usd">170415000</us-gaap:CostsAndExpenses>
    <us-gaap:OperatingIncomeLoss
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTAtMS0xLTEtMA_bbcf229e-f681-4338-b24b-f168892990ec"
      unitRef="usd">9783000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTAtMy0xLTEtMA_adcea4fa-54d1-4005-bab9-43c878770d91"
      unitRef="usd">6461000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTAtNS0xLTEtMA_8e4f0a89-6b8a-41b7-ad7e-36be91e3935a"
      unitRef="usd">19656000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTEtMS0xLTEtMA_b3e0bb1a-42c6-4133-8baa-0a5179504594"
      unitRef="usd">188897000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTEtMy0xLTEtMA_dfde06f0-8b24-4bd4-8fbf-4679acfe0b37"
      unitRef="usd">16000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTEtNS0xLTEtMA_f629fb10-dec6-4e3e-8f69-611a2a48d14c"
      unitRef="usd">-56000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:InterestIncomeExpenseNet
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTItMS0xLTEtMA_24a344ab-32c7-42d0-bc6f-30a7a80ae56b"
      unitRef="usd">-1849000</us-gaap:InterestIncomeExpenseNet>
    <us-gaap:InterestIncomeExpenseNet
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTItMy0xLTEtMA_917c64a6-45bb-4711-ace7-9815068de35a"
      unitRef="usd">-1654000</us-gaap:InterestIncomeExpenseNet>
    <us-gaap:InterestIncomeExpenseNet
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTItNS0xLTEtMA_d3e83178-b5ca-4f1e-97d9-925347908c10"
      unitRef="usd">787000</us-gaap:InterestIncomeExpenseNet>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTMtMS0xLTEtMA_91234946-bd1e-4a2e-8329-270bdf98e671"
      unitRef="usd">196831000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTMtMy0xLTEtMA_402e551b-ef88-477e-a296-4db37481d8dd"
      unitRef="usd">4823000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTMtNS0xLTEtMA_405c76a6-5b46-495e-869d-f508ad88c9a4"
      unitRef="usd">20387000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTQtMS0xLTEtMA_1691b446-24cd-4e43-b1ae-cea38f82ff5a"
      unitRef="usd">38428000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTQtMy0xLTEtMA_fbf69b73-4507-449f-8ec1-007e167caeaf"
      unitRef="usd">-31459000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTQtNS0xLTEtMA_5c8b9b06-e888-4085-bd67-cdcd70477b10"
      unitRef="usd">420000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:NetIncomeLoss
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTUtMS0xLTEtMA_f829d523-fe12-420c-a1ae-cc6187d1f0a5"
      unitRef="usd">158403000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTUtMy0xLTEtMA_396bd0f1-84f4-43c5-a776-dff367e9d14c"
      unitRef="usd">36282000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTUtNS0xLTEtMA_710c695d-b6f9-430f-83ec-1e7c6924f254"
      unitRef="usd">19967000</us-gaap:NetIncomeLoss>
    <us-gaap:EarningsPerShareBasic
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTctMS0xLTEtMA_7b0c058a-483c-4956-be8b-fc8c465f911b"
      unitRef="usdPerShare">4.62</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTctMy0xLTEtMA_38954c52-a210-4b24-ba0c-ffc747a062d0"
      unitRef="usdPerShare">1.07</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTctNS0xLTEtMA_303a9f56-3ca2-4d15-9783-cba9ebb9e911"
      unitRef="usdPerShare">0.59</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTgtMS0xLTEtMA_19ee3049-6740-4b82-a9fe-bb2f74e3226f"
      unitRef="usdPerShare">4.44</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTgtMy0xLTEtMA_d5ac8507-1c72-4c04-a1f9-8a5b7a5d4afe"
      unitRef="usdPerShare">1.02</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMTgtNS0xLTEtMA_8c4a054c-9c80-4c26-a965-2798f2c45470"
      unitRef="usdPerShare">0.56</us-gaap:EarningsPerShareDiluted>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMjAtMS0xLTEtMA_a8ffae71-91c8-4023-92ba-d89403f2a8d3"
      unitRef="shares">34264000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMjAtMy0xLTEtMA_9902583a-a035-43b5-ad33-24e32cffdaf3"
      unitRef="shares">34016000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMjAtNS0xLTEtMA_173315b4-90d5-401c-b31b-72e917dae3fe"
      unitRef="shares">34128000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMjEtMS0xLTEtMA_340da975-314b-4e31-ac27-a1479a04afe7"
      unitRef="shares">35713000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMjEtMy0xLTEtMA_aa87c805-b57f-4c34-a6b6-8a394530c975"
      unitRef="shares">35567000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV83OS9mcmFnOjI2NjdkOGNhN2Y1ODQ1OGI5OWFlODBiNmNjYWU4ZjQ2L3RhYmxlOjI1Y2YwOGEyNDU0NjQ1YTc4MGIzNWFmZTljZjViZTk1L3RhYmxlcmFuZ2U6MjVjZjA4YTI0NTQ2NDVhNzgwYjM1YWZlOWNmNWJlOTVfMjEtNS0xLTEtMA_ef444e9a-b724-442c-99b5-53e063a5385a"
      unitRef="shares">35562000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:NetIncomeLoss
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84Mi9mcmFnOjdhMTdkMGEzZWEyODRhZDZiNDk2MzhkMjk1ZGFhYjVkL3RhYmxlOjY5ZGU4NWVhNTk2MzQxODU5NWQ3YzQ3N2RlNWM5NTRjL3RhYmxlcmFuZ2U6NjlkZTg1ZWE1OTYzNDE4NTk1ZDdjNDc3ZGU1Yzk1NGNfMi0xLTEtMS0w_f829d523-fe12-420c-a1ae-cc6187d1f0a5"
      unitRef="usd">158403000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84Mi9mcmFnOjdhMTdkMGEzZWEyODRhZDZiNDk2MzhkMjk1ZGFhYjVkL3RhYmxlOjY5ZGU4NWVhNTk2MzQxODU5NWQ3YzQ3N2RlNWM5NTRjL3RhYmxlcmFuZ2U6NjlkZTg1ZWE1OTYzNDE4NTk1ZDdjNDc3ZGU1Yzk1NGNfMi0zLTEtMS0w_396bd0f1-84f4-43c5-a776-dff367e9d14c"
      unitRef="usd">36282000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84Mi9mcmFnOjdhMTdkMGEzZWEyODRhZDZiNDk2MzhkMjk1ZGFhYjVkL3RhYmxlOjY5ZGU4NWVhNTk2MzQxODU5NWQ3YzQ3N2RlNWM5NTRjL3RhYmxlcmFuZ2U6NjlkZTg1ZWE1OTYzNDE4NTk1ZDdjNDc3ZGU1Yzk1NGNfMi01LTEtMS0w_1fdb78c8-045b-4485-af52-5880046b79b7"
      unitRef="usd">19967000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84Mi9mcmFnOjdhMTdkMGEzZWEyODRhZDZiNDk2MzhkMjk1ZGFhYjVkL3RhYmxlOjY5ZGU4NWVhNTk2MzQxODU5NWQ3YzQ3N2RlNWM5NTRjL3RhYmxlcmFuZ2U6NjlkZTg1ZWE1OTYzNDE4NTk1ZDdjNDc3ZGU1Yzk1NGNfNC0xLTEtMS0w_3acf8621-6fa8-4125-ba45-95042f560ca6"
      unitRef="usd">23000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84Mi9mcmFnOjdhMTdkMGEzZWEyODRhZDZiNDk2MzhkMjk1ZGFhYjVkL3RhYmxlOjY5ZGU4NWVhNTk2MzQxODU5NWQ3YzQ3N2RlNWM5NTRjL3RhYmxlcmFuZ2U6NjlkZTg1ZWE1OTYzNDE4NTk1ZDdjNDc3ZGU1Yzk1NGNfNC0zLTEtMS0w_64032dfe-4cad-4b65-ae87-5442f7ecff85"
      unitRef="usd">211000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84Mi9mcmFnOjdhMTdkMGEzZWEyODRhZDZiNDk2MzhkMjk1ZGFhYjVkL3RhYmxlOjY5ZGU4NWVhNTk2MzQxODU5NWQ3YzQ3N2RlNWM5NTRjL3RhYmxlcmFuZ2U6NjlkZTg1ZWE1OTYzNDE4NTk1ZDdjNDc3ZGU1Yzk1NGNfNC01LTEtMS0w_973b4486-4f61-4066-9ba3-bcc05922c3af"
      unitRef="usd">31000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84Mi9mcmFnOjdhMTdkMGEzZWEyODRhZDZiNDk2MzhkMjk1ZGFhYjVkL3RhYmxlOjY5ZGU4NWVhNTk2MzQxODU5NWQ3YzQ3N2RlNWM5NTRjL3RhYmxlcmFuZ2U6NjlkZTg1ZWE1OTYzNDE4NTk1ZDdjNDc3ZGU1Yzk1NGNfNS0xLTEtMS0w_c3168065-7070-4a79-acf6-5b673db3b99b"
      unitRef="usd">158426000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84Mi9mcmFnOjdhMTdkMGEzZWEyODRhZDZiNDk2MzhkMjk1ZGFhYjVkL3RhYmxlOjY5ZGU4NWVhNTk2MzQxODU5NWQ3YzQ3N2RlNWM5NTRjL3RhYmxlcmFuZ2U6NjlkZTg1ZWE1OTYzNDE4NTk1ZDdjNDc3ZGU1Yzk1NGNfNS0zLTEtMS0w_c3c370e3-7efd-460d-9349-16274f312978"
      unitRef="usd">36493000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84Mi9mcmFnOjdhMTdkMGEzZWEyODRhZDZiNDk2MzhkMjk1ZGFhYjVkL3RhYmxlOjY5ZGU4NWVhNTk2MzQxODU5NWQ3YzQ3N2RlNWM5NTRjL3RhYmxlcmFuZ2U6NjlkZTg1ZWE1OTYzNDE4NTk1ZDdjNDc3ZGU1Yzk1NGNfNS01LTEtMS0w_7a2574cc-d633-47d6-a9ec-e4e3278e7aef"
      unitRef="usd">19998000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:SharesOutstanding
      contextRef="i7914f6f887a9464f88693d0427ccdb78_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfNS02LTEtMS0w_6c209527-ae50-4c06-a130-a045ffaec632"
      unitRef="shares">14879000</us-gaap:SharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i7914f6f887a9464f88693d0427ccdb78_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfNS04LTEtMS0w_46e88d3e-3462-4105-bb15-d78b8cc68823"
      unitRef="usd">1000</us-gaap:StockholdersEquity>
    <us-gaap:SharesOutstanding
      contextRef="i380df49aca51413db24bbf1817db8287_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfNS0xMC0xLTEtMA_3a6c33e3-bc25-4222-81a1-324ac1ee0d87"
      unitRef="shares">19102000</us-gaap:SharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i380df49aca51413db24bbf1817db8287_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfNS0xMi0xLTEtMA_bcfdf066-955a-417d-8b98-98ff9f838fc7"
      unitRef="usd">3000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i498f187c4bf34f47b08c411cddca983c_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfNS0xNC0xLTEtMA_b0a2da8a-d93f-488d-a2af-c98a32f29606"
      unitRef="usd">152531000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ib0fb2ee59e454533b485c7404c5ddf95_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfNS0xNi0xLTEtMA_abf185be-ec8c-471b-b26d-34efdedbe427"
      unitRef="usd">-209000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="if29e6192a513486b813c835f1b67c375_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfNS0xOC0xLTEtMA_c6f401a0-6611-47ee-80c6-f54a434e0de3"
      unitRef="usd">0</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i4fdf7beea5e247d6a2da08d07d68f4d6_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfNS0yMC0xLTEtMA_acf98da3-1608-4d44-845b-a826990024d6"
      unitRef="usd">-67247000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i33fd34f1e8d1430f80df86809474ca2c_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfNS0yMi0xLTEtMA_ae3dfb8e-048c-401e-b175-80fac61306b6"
      unitRef="usd">85079000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="ia66de228f69146c68d932a63d592f037_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfNi02LTEtMS0w_2c43526e-3d2d-4342-987a-2a5be861991b"
      unitRef="shares">170000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="idf42afbf9088434abc9cde73af39ad09_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfNi0xNC0xLTEtMA_f0d2b629-af65-49af-ab21-cd022003fdb6"
      unitRef="usd">1035000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfNi0yMi0xLTEtMA_00dffe17-e43e-4a0b-a3b3-22442fb600e3"
      unitRef="usd">1035000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="idf42afbf9088434abc9cde73af39ad09_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfNy0xNC0xLTEtMA_eb3e9c3c-6168-4a88-8fc8-d69191d769eb"
      unitRef="usd">7187000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfNy0yMi0xLTEtMA_6e1cc4a5-9ffe-45e0-ba6c-e7fa13890a8d"
      unitRef="usd">7187000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <appf:RestrictedStockUnitsSharesIssuedNetOfSharesForTaxWithholdings
      contextRef="ia66de228f69146c68d932a63d592f037_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfOC02LTEtMS0w_f4ee3076-d252-492a-aa5d-244e8b58dd32"
      unitRef="shares">113000</appf:RestrictedStockUnitsSharesIssuedNetOfSharesForTaxWithholdings>
    <appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings
      contextRef="idf42afbf9088434abc9cde73af39ad09_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfOC0xNC0xLTEtMA_4e3e41be-fde1-4451-bdc6-168c6dd7d9e4"
      unitRef="usd">-2890000</appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings>
    <appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfOC0yMi0xLTEtMA_1d4ddeeb-59a7-46d9-b9d0-65e018dc4744"
      unitRef="usd">-2890000</appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationAndExerciseOfStockOptions
      contextRef="idf42afbf9088434abc9cde73af39ad09_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfOS0xNC0xLTEtMA_3f91ac46-b1e9-4936-94c7-6bf599d675c2"
      unitRef="usd">35000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationAndExerciseOfStockOptions>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationAndExerciseOfStockOptions
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfOS0yMi0xLTEtMA_ac1f4666-3703-436b-a3e2-90d43d442adf"
      unitRef="usd">35000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationAndExerciseOfStockOptions>
    <us-gaap:ConversionOfStockSharesConverted1
      contextRef="ia66de228f69146c68d932a63d592f037_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTAtNi0xLTEtMA_bea26a96-b31c-436b-8085-a1e470b70ffb"
      unitRef="shares">-993000</us-gaap:ConversionOfStockSharesConverted1>
    <us-gaap:ConversionOfStockAmountConverted1
      contextRef="ia66de228f69146c68d932a63d592f037_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTAtOC0xLTEtMA_976aa87a-4b26-49bf-9a77-cfae0bfa32f6"
      unitRef="usd">-1000</us-gaap:ConversionOfStockAmountConverted1>
    <us-gaap:ConversionOfStockSharesConverted1
      contextRef="id0400705499b4ba6aa92d0b3e52a34cc_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTAtMTAtMS0xLTA_7c7f7c4c-5eaa-43b4-835e-eb1e081abb01"
      unitRef="shares">993000</us-gaap:ConversionOfStockSharesConverted1>
    <us-gaap:ConversionOfStockAmountConverted1
      contextRef="id0400705499b4ba6aa92d0b3e52a34cc_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTAtMTItMS0xLTA_6bf516a1-b97e-4e36-8a0e-28e0a67534b7"
      unitRef="usd">1000</us-gaap:ConversionOfStockAmountConverted1>
    <us-gaap:ConversionOfStockAmountConverted1
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTAtMjItMS0xLTA_b23a2b1b-7def-4853-b08e-f28ccf726abf"
      unitRef="usd">0</us-gaap:ConversionOfStockAmountConverted1>
    <us-gaap:StockIssuedDuringPeriodSharesRestrictedStockAwardGross
      contextRef="ia66de228f69146c68d932a63d592f037_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTEtNi0xLTEtMA_06091b1c-b26e-494e-85a7-5e21b25ebbda"
      unitRef="shares">5000</us-gaap:StockIssuedDuringPeriodSharesRestrictedStockAwardGross>
    <us-gaap:StockIssuedDuringPeriodValueRestrictedStockAwardGross
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTEtMjItMS0xLTA_a7df0a0b-a49e-423c-b99a-9c4a6a529632"
      unitRef="usd">0</us-gaap:StockIssuedDuringPeriodValueRestrictedStockAwardGross>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i3a21f7a26f324477a23e1b00e3de6acf_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTItMTYtMS0xLTA_3178863a-694d-4594-9fc9-7935ff37f2a3"
      unitRef="usd">31000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTItMjItMS0xLTA_04843e72-fbb7-4f77-8469-0d4be39252f1"
      unitRef="usd">31000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="ia66de228f69146c68d932a63d592f037_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTMtNi0xLTEtMzYz_72297502-2c4b-410b-97ef-d1cb30f55077"
      unitRef="shares">371000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="ie78d128f448f42b59f0c10b1987488ab_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTMtMTgtMS0xLTM5NQ_87c8b074-1f49-4a34-bb2f-59d6c1b46a27"
      unitRef="usd">21562000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTMtMjItMS0xLTQwNQ_4426410e-cdd7-4e83-a923-743be75d2e0b"
      unitRef="usd">21562000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockholdersEquity
      contextRef="i4f9a14399d354f778d02a86329cf3648_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTQtMjAtMS0xLTQwMA_38c85b4d-3f53-4bce-b904-08ec8807bcb9"
      unitRef="usd">2964000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="iec0a0a7e74c54db6a03735eb3abc8ecc_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTQtMjItMS0xLTQwNQ_c55e215d-3e66-4929-af32-225c0affa664"
      unitRef="usd">2964000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="i6069f181c51a415493981b96f64e2255_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTUtMjAtMS0xLTQwMA_47a40d95-f754-4953-a007-18d92c7d8b61"
      unitRef="usd">19967000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTUtMjItMS0xLTQwNQ_883491cc-37a6-403f-94e1-4d357376bfd6"
      unitRef="usd">19967000</us-gaap:NetIncomeLoss>
    <us-gaap:SharesOutstanding
      contextRef="i8d5709137fe94ae29243529a3254cedd_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTMtNi0xLTEtMA_4d18030d-c5a1-444f-b92f-17bcab89222d"
      unitRef="shares">15789000</us-gaap:SharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i8d5709137fe94ae29243529a3254cedd_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTMtOC0xLTEtMA_7f3f8da8-6b94-4ee7-a571-ff3385d884b2"
      unitRef="usd">2000</us-gaap:StockholdersEquity>
    <us-gaap:SharesOutstanding
      contextRef="i4867c6353b784ddda2975953bb82525f_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTMtMTAtMS0xLTA_f05a62b5-754f-4bd2-a2ee-b2e182824cf1"
      unitRef="shares">18109000</us-gaap:SharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i4867c6353b784ddda2975953bb82525f_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTMtMTItMS0xLTA_ad005354-cb85-44ac-96ca-72f519a1301a"
      unitRef="usd">2000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i5c4d95a6966e422a919bfb5999cbf7fc_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTMtMTQtMS0xLTA_6ccc6724-0b26-4b79-8bf5-6c747b977bac"
      unitRef="usd">157898000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i942745ea801a453f9a257557fb01f52d_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTMtMTYtMS0xLTA_eca2bae5-8ef9-4646-8ed9-2b06bc527adc"
      unitRef="usd">-178000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i791194c060134928b768659ecb27b02b_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTMtMTgtMS0xLTA_97f1b114-4bbd-4821-a9a2-a4bc9c93ab2f"
      unitRef="usd">-21562000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="idc7d4eeeecff419bb9e2bfa4f8aa1a5b_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTMtMjAtMS0xLTA_fa946d19-931c-424e-9813-85783543b287"
      unitRef="usd">-44316000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i02d63145a04b47a48a5a20bb6671ce00_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTMtMjItMS0xLTA_2d495329-e3f9-44b0-8bb0-d69b5ea129d4"
      unitRef="usd">91846000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="i2f7a043449ac46d590ef12acaf798ce2_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTQtNi0xLTEtMA_d1d8ce79-017a-47e7-be86-c1ddeb4568a7"
      unitRef="shares">120000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="i7dbaf7d9006844cbbb1962be43a3b7b9_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTQtMTAtMS0xLTA_46834588-5206-4e50-880c-6069dba942be"
      unitRef="shares">0</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i354c2585bf144804a5bb15401a0002e2_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTQtMTQtMS0xLTA_dee8524e-436e-44f9-a8d1-3d325d6e70db"
      unitRef="usd">553000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTQtMjItMS0xLTA_615f69b8-5cf9-42b0-919f-5338da4ec780"
      unitRef="usd">553000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i354c2585bf144804a5bb15401a0002e2_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTUtMTQtMS0xLTA_e42a453b-0953-4e56-8e95-38ee64570106"
      unitRef="usd">8985000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTUtMjItMS0xLTA_f8110b0d-ceb7-4769-a185-bee0e4172bff"
      unitRef="usd">8985000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <appf:RestrictedStockUnitsSharesIssuedNetOfSharesForTaxWithholdings
      contextRef="i2f7a043449ac46d590ef12acaf798ce2_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTYtNi0xLTEtMA_d3fda4f9-bb81-4563-b641-96c3d3f0ff9d"
      unitRef="shares">123000</appf:RestrictedStockUnitsSharesIssuedNetOfSharesForTaxWithholdings>
    <appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings
      contextRef="i354c2585bf144804a5bb15401a0002e2_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTYtMTQtMS0xLTA_8178490a-09da-4c48-b9d0-3f7081807cae"
      unitRef="usd">-5933000</appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings>
    <appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTYtMjItMS0xLTA_b32507ac-311d-45f1-a7c0-8d745b172f4f"
      unitRef="usd">-5933000</appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationAndExerciseOfStockOptions
      contextRef="i354c2585bf144804a5bb15401a0002e2_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTktMTQtMS0xLTA_b4b1d5b4-53dd-4b52-9461-9bf4a39e25f5"
      unitRef="usd">6000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationAndExerciseOfStockOptions>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationAndExerciseOfStockOptions
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMTktMjItMS0xLTA_3cc38ec6-e87f-43d1-b38b-f5b0d31b54fd"
      unitRef="usd">6000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationAndExerciseOfStockOptions>
    <us-gaap:ConversionOfStockSharesConverted1
      contextRef="i2f7a043449ac46d590ef12acaf798ce2_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjAtNi0xLTEtMA_47051439-0998-47ba-b324-ba505c6cdf6c"
      unitRef="shares">-515000</us-gaap:ConversionOfStockSharesConverted1>
    <us-gaap:ConversionOfStockSharesConverted1
      contextRef="i7dbaf7d9006844cbbb1962be43a3b7b9_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjAtMTAtMS0xLTA_d5a71d04-1002-45a3-9733-f615e03ea351"
      unitRef="shares">515000</us-gaap:ConversionOfStockSharesConverted1>
    <us-gaap:ConversionOfStockAmountConverted1
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjAtMjItMS0xLTA_ad3e75a1-ecb4-43cc-bf10-346d32024670"
      unitRef="usd">0</us-gaap:ConversionOfStockAmountConverted1>
    <us-gaap:StockIssuedDuringPeriodSharesRestrictedStockAwardGross
      contextRef="i2f7a043449ac46d590ef12acaf798ce2_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjEtNi0xLTEtMA_b550d88e-b4cd-494d-9f06-49f30928b430"
      unitRef="shares">5000</us-gaap:StockIssuedDuringPeriodSharesRestrictedStockAwardGross>
    <us-gaap:StockIssuedDuringPeriodValueRestrictedStockAwardGross
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjEtMjItMS0xLTA_fcf6a36d-4d76-4b91-a9a1-d8b81ec8ce73"
      unitRef="usd">0</us-gaap:StockIssuedDuringPeriodValueRestrictedStockAwardGross>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i2ffe2487696b4ef8ae9895d1f3e60e2d_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjItMTYtMS0xLTA_26e84868-c50f-4b44-a195-5be7de337b9e"
      unitRef="usd">211000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjItMjItMS0xLTA_49ca4537-baa3-4e88-af79-bcf843457a4c"
      unitRef="usd">211000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:NetIncomeLoss
      contextRef="ia17898eab0a84e86af4f2838bb075bc8_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjQtMjAtMS0xLTA_87b7dc4e-138e-4ef1-8c0d-1556c6a1611f"
      unitRef="usd">36282000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjQtMjItMS0xLTA_f34b4dc8-a33a-41c4-9305-33ca27cb298b"
      unitRef="usd">36282000</us-gaap:NetIncomeLoss>
    <us-gaap:SharesOutstanding
      contextRef="ie1f2fd74e7814953a98976e1522397f3_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjUtNi0xLTEtMA_6338827c-711e-4862-bda5-c4dbe400a5bb"
      unitRef="shares">16552000</us-gaap:SharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="ie1f2fd74e7814953a98976e1522397f3_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjUtOC0xLTEtMA_f201b023-317b-44f5-a64b-d7ab20d1a123"
      unitRef="usd">2000</us-gaap:StockholdersEquity>
    <us-gaap:SharesOutstanding
      contextRef="i2eceb2a67816475f9495f49c45469f2c_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjUtMTAtMS0xLTA_7e640218-75df-440e-8a1c-449357bc08be"
      unitRef="shares">17594000</us-gaap:SharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i2eceb2a67816475f9495f49c45469f2c_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjUtMTItMS0xLTA_c477b0e1-3e22-49af-9cca-b1e37157bd33"
      unitRef="usd">2000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i98e2ea9866cd4d27921474d613e42da0_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjUtMTQtMS0xLTA_1d896ca6-f3af-4e2e-b3c1-7ad63f981d47"
      unitRef="usd">161509000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i3f2bc66ba866450fb4937f02eafd39f7_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjUtMTYtMS0xLTA_873cae92-b786-4264-83f8-a161b4dc0187"
      unitRef="usd">33000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="if4ee326334da492e92b01dc1a3d4ae35_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjUtMTgtMS0xLTA_7f525859-2b51-49a6-bcee-887c1806175f"
      unitRef="usd">-21562000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i1fbc00c8aa2048a4b08a253ab945d669_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjUtMjAtMS0xLTA_67b5d6c9-3ab7-4a25-8af0-86fc848e6250"
      unitRef="usd">-8034000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjUtMjItMS0xLTA_575f1753-8d84-4941-a41b-e439f8b73250"
      unitRef="usd">131950000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="i6eeb1f13b2194de59269c30d1f5e4d1b_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjYtNi0xLTEtMA_74a17207-7c5e-4a97-981c-ba74151d81c7"
      unitRef="shares">106000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="if51c7056a1e3488ba6078db402a630de_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjYtMTAtMS0xLTA_ebb398d0-42dc-41fc-a697-993bf974023d"
      unitRef="shares">13000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i648786f29a0c4eab8f7bec7d3ec86876_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjYtMTQtMS0xLTA_1afae530-37fa-4773-a2a2-02f69fe5b542"
      unitRef="usd">822000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjYtMjItMS0xLTA_b7fce93a-cea6-4c65-a621-2925d4777e3b"
      unitRef="usd">822000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i648786f29a0c4eab8f7bec7d3ec86876_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjctMTQtMS0xLTA_4b76da5e-df4b-4afa-be49-bd83d87cb75a"
      unitRef="usd">11112000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjctMjItMS0xLTA_14b0a965-31ba-4ec6-a2c5-ee7649b2f8f7"
      unitRef="usd">11112000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <appf:RestrictedStockUnitsSharesIssuedNetOfSharesForTaxWithholdings
      contextRef="i6eeb1f13b2194de59269c30d1f5e4d1b_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjgtNi0xLTEtMA_4448a3d3-0142-4cf7-8d1e-d3a37c6b3abd"
      unitRef="shares">166000</appf:RestrictedStockUnitsSharesIssuedNetOfSharesForTaxWithholdings>
    <appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings
      contextRef="i648786f29a0c4eab8f7bec7d3ec86876_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjgtMTQtMS0xLTA_6b3777bc-ad72-4d12-b1bc-b96ac246c2aa"
      unitRef="usd">-12196000</appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings>
    <appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMjgtMjItMS0xLTA_b4be63fb-b2b1-485a-8fde-0507dace2217"
      unitRef="usd">-12196000</appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings>
    <us-gaap:ConversionOfStockSharesConverted1
      contextRef="i6eeb1f13b2194de59269c30d1f5e4d1b_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMzAtNi0xLTEtMA_5acf366f-5731-4e57-9d5d-b1b320971278"
      unitRef="shares">-1948000</us-gaap:ConversionOfStockSharesConverted1>
    <us-gaap:ConversionOfStockSharesConverted1
      contextRef="if51c7056a1e3488ba6078db402a630de_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMzAtMTAtMS0xLTA_0d5ddbba-3f58-4ffc-9a56-6eb70c95c036"
      unitRef="shares">1948000</us-gaap:ConversionOfStockSharesConverted1>
    <us-gaap:ConversionOfStockAmountConverted1
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMzAtMjItMS0xLTA_4eb45206-276e-4995-bd72-edf852a6fe48"
      unitRef="usd">0</us-gaap:ConversionOfStockAmountConverted1>
    <us-gaap:StockIssuedDuringPeriodSharesRestrictedStockAwardGross
      contextRef="i6eeb1f13b2194de59269c30d1f5e4d1b_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMzEtNi0xLTEtMA_94b5f84b-8337-4bbb-98b0-4c4f79461da3"
      unitRef="shares">5000</us-gaap:StockIssuedDuringPeriodSharesRestrictedStockAwardGross>
    <us-gaap:StockIssuedDuringPeriodValueRestrictedStockAwardGross
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMzEtMjItMS0xLTA_43ee5648-2768-4e02-a813-76187435afea"
      unitRef="usd">0</us-gaap:StockIssuedDuringPeriodValueRestrictedStockAwardGross>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="ib90028dcbf22490dbcf8b9384e259871_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMzItMTYtMS0xLTA_7f61efec-09b2-4f5a-8e7f-c6d0a06e815c"
      unitRef="usd">23000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMzItMjItMS0xLTA_50db56aa-2e94-4247-98b4-801b4dea00cf"
      unitRef="usd">23000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="i6eeb1f13b2194de59269c30d1f5e4d1b_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMzMtNi0xLTEtMA_715a14d3-44fc-4a87-9c39-3d7ab09685d7"
      unitRef="shares">48000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i14449d34ed1b478492c96facf4421275_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMzMtMTgtMS0xLTA_1927ceba-d5c0-4832-83dc-bc56896eed42"
      unitRef="usd">4194000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMzMtMjItMS0xLTA_35982b93-32c9-4901-8c1f-2e6b4aa34de9"
      unitRef="usd">4194000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:NetIncomeLoss
      contextRef="i18e3341bbce74544a9b308931cf2782f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMzQtMjAtMS0xLTA_59751d7a-e232-40cf-82db-a5206fbfc7fd"
      unitRef="usd">158403000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMzQtMjItMS0xLTA_b77ac4fe-1f80-43fc-951a-ca31209a3f0b"
      unitRef="usd">158403000</us-gaap:NetIncomeLoss>
    <us-gaap:SharesOutstanding
      contextRef="i7537d46876a24976951eb2e446da87ae_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMzUtNi0xLTEtMA_ced90dd0-763b-4c06-8ee5-818a17083e0c"
      unitRef="shares">18729000</us-gaap:SharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i7537d46876a24976951eb2e446da87ae_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMzUtOC0xLTEtMA_59476cdf-bd68-4fa1-868b-f9b4711af32b"
      unitRef="usd">2000</us-gaap:StockholdersEquity>
    <us-gaap:SharesOutstanding
      contextRef="i85ed74d7b77a4a9f8e3c6d1dd9cefac9_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMzUtMTAtMS0xLTA_44d54d70-23ea-4310-bb4d-98e17304a252"
      unitRef="shares">15659000</us-gaap:SharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i85ed74d7b77a4a9f8e3c6d1dd9cefac9_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMzUtMTItMS0xLTA_42072e67-65fb-4ec4-bd56-2ff316dde307"
      unitRef="usd">2000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="icc5bc645dca9426a878a741c849c2024_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMzUtMTQtMS0xLTA_8d595b62-1af1-4987-9730-b38be73a2e9e"
      unitRef="usd">161247000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ie8c0c53063e34fd0b5d0a014a3b311a7_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMzUtMTYtMS0xLTA_1e2a716e-0f75-4a61-8ec5-fb5686654596"
      unitRef="usd">56000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ic9339f252af746089527f092369d643f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMzUtMTgtMS0xLTA_dc8ce700-bbd2-4876-ab61-be2fe18052d3"
      unitRef="usd">-25756000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ia838a71712074d6a982bc46c2fe29970_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMzUtMjAtMS0xLTA_9cfefa2f-8b74-4aa6-a82e-df2eb7cae0b6"
      unitRef="usd">150369000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84NS9mcmFnOmE3ZDM1NTUwZTgzNDQ1ZWFhMzBmNzNhZGUyZTJiYTBhL3RhYmxlOmE1N2UwZjY3ZDM5MDQxYjNhMzljMTEzNTk5M2JmMTllL3RhYmxlcmFuZ2U6YTU3ZTBmNjdkMzkwNDFiM2EzOWMxMTM1OTkzYmYxOWVfMzUtMjItMS0xLTA_a6445b54-24af-4e34-ab38-53f3b8428d28"
      unitRef="usd">285920000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMy0xLTEtMS0w_561dabd5-1d75-4bad-a0ee-8c8ca77216ef"
      unitRef="usd">158403000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMy0zLTEtMS0w_c99645bd-a8ae-4f38-b110-8e659b30ca90"
      unitRef="usd">36282000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMy01LTEtMS0w_a67e2f04-7967-49f5-b918-000e5e1397ae"
      unitRef="usd">19967000</us-gaap:NetIncomeLoss>
    <appf:DepreciationDepletionandAmortizationExcludingAmortizationofFinancingCosts
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNS0xLTEtMS0w_558fb7f1-fe4f-44c1-a066-4237ac778962"
      unitRef="usd">26790000</appf:DepreciationDepletionandAmortizationExcludingAmortizationofFinancingCosts>
    <appf:DepreciationDepletionandAmortizationExcludingAmortizationofFinancingCosts
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNS0zLTEtMS0w_a5c8bbc3-b0bb-47bb-a5d4-eca85490790c"
      unitRef="usd">22395000</appf:DepreciationDepletionandAmortizationExcludingAmortizationofFinancingCosts>
    <appf:DepreciationDepletionandAmortizationExcludingAmortizationofFinancingCosts
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNS01LTEtMS0w_6734d3e5-5d19-4a42-ba19-049352ea616b"
      unitRef="usd">14576000</appf:DepreciationDepletionandAmortizationExcludingAmortizationofFinancingCosts>
    <appf:AmortizationOfOperatingLeaseRightOfUseAssets
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNi0xLTEtMS0w_3952991e-5333-41c2-815b-7136ebfdf41f"
      unitRef="usd">3701000</appf:AmortizationOfOperatingLeaseRightOfUseAssets>
    <appf:AmortizationOfOperatingLeaseRightOfUseAssets
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNi0zLTEtMS0w_5e5f1fd2-db2c-4084-8806-b046a967252b"
      unitRef="usd">4130000</appf:AmortizationOfOperatingLeaseRightOfUseAssets>
    <appf:AmortizationOfOperatingLeaseRightOfUseAssets
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNi01LTEtMS0w_6da919ae-4d26-474a-9241-748e91fa211c"
      unitRef="usd">0</appf:AmortizationOfOperatingLeaseRightOfUseAssets>
    <us-gaap:DeferredIncomeTaxesAndTaxCredits
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNy0xLTEtMS00NzA_bf77425f-f746-4540-a200-0b8869660043"
      unitRef="usd">29002000</us-gaap:DeferredIncomeTaxesAndTaxCredits>
    <us-gaap:DeferredIncomeTaxesAndTaxCredits
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNy0zLTEtMS00NzA_8405a74c-9142-4e2d-ace6-01d774a2103c"
      unitRef="usd">-31455000</us-gaap:DeferredIncomeTaxesAndTaxCredits>
    <us-gaap:DeferredIncomeTaxesAndTaxCredits
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNy01LTEtMS00NzA_fa30246d-bf7c-468f-9939-bd1f8196b9d6"
      unitRef="usd">0</us-gaap:DeferredIncomeTaxesAndTaxCredits>
    <us-gaap:ShareBasedCompensation
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNy0xLTEtMS0w_99297065-8175-49cd-940f-d1146445eef2"
      unitRef="usd">9025000</us-gaap:ShareBasedCompensation>
    <us-gaap:ShareBasedCompensation
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNy0zLTEtMS0w_19d67efe-0237-450d-980c-e8aa8834204a"
      unitRef="usd">7309000</us-gaap:ShareBasedCompensation>
    <us-gaap:ShareBasedCompensation
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNy01LTEtMS0w_ddf4adc4-a4be-41c4-9629-127696ae7fd3"
      unitRef="usd">6337000</us-gaap:ShareBasedCompensation>
    <us-gaap:GainLossOnSaleOfBusiness
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfOC0xLTEtMS0w_99746b66-44a3-4c89-95e6-4e776aef9121"
      unitRef="usd">187658000</us-gaap:GainLossOnSaleOfBusiness>
    <us-gaap:GainLossOnSaleOfBusiness
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfOC0zLTEtMS0w_074a5902-82cf-4aca-b7cf-997a61732f9d"
      unitRef="usd">0</us-gaap:GainLossOnSaleOfBusiness>
    <us-gaap:GainLossOnSaleOfBusiness
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfOC01LTEtMS0w_a5c518d2-e2e9-463f-baa6-7c1f8f9d64e0"
      unitRef="usd">0</us-gaap:GainLossOnSaleOfBusiness>
    <us-gaap:OtherNoncashIncomeExpense
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfOS0xLTEtMS0w_88c36de4-6c81-44fd-86b9-3a5b0733e224"
      unitRef="usd">-125000</us-gaap:OtherNoncashIncomeExpense>
    <us-gaap:OtherNoncashIncomeExpense
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfOS0zLTEtMS0w_11e2d391-a9e1-4fb2-b60b-bd5d821010a6"
      unitRef="usd">-32000</us-gaap:OtherNoncashIncomeExpense>
    <us-gaap:OtherNoncashIncomeExpense
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfOS01LTEtMS0w_af84bcc0-9324-417d-9b63-c281e0697c89"
      unitRef="usd">-224000</us-gaap:OtherNoncashIncomeExpense>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTEtMS0xLTEtMA_782c6883-e6ef-453a-90e3-25c0e3d63957"
      unitRef="usd">2782000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTEtMy0xLTEtMA_19c5255e-54d5-4d34-a829-2b80131ac197"
      unitRef="usd">2031000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTEtNS0xLTEtMA_bfd5ebc5-11a2-47f1-b65e-c277a110dcfe"
      unitRef="usd">908000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTItMS0xLTEtMA_7dd74443-40f1-45d5-9b1d-45360127538f"
      unitRef="usd">5894000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTItMy0xLTEtMA_99d093be-a297-421b-8221-77c4a5f27eb1"
      unitRef="usd">4031000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTItNS0xLTEtMA_27bd8a20-50c9-4e56-a589-6efc12760cc3"
      unitRef="usd">6073000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInOtherOperatingAssets
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTMtMS0xLTEtMA_aa563d3f-e79b-476d-9c16-5e9db5c59201"
      unitRef="usd">519000</us-gaap:IncreaseDecreaseInOtherOperatingAssets>
    <us-gaap:IncreaseDecreaseInOtherOperatingAssets
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTMtMy0xLTEtMA_ccccc3ce-393c-4d35-8d03-f52be16edbcb"
      unitRef="usd">-1376000</us-gaap:IncreaseDecreaseInOtherOperatingAssets>
    <us-gaap:IncreaseDecreaseInOtherOperatingAssets
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTMtNS0xLTEtMA_c885ecaf-98eb-4bcf-94e0-e0debd05b040"
      unitRef="usd">4447000</us-gaap:IncreaseDecreaseInOtherOperatingAssets>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTQtMS0xLTEtMA_665a3863-ad5f-4107-ba35-2898edbb528f"
      unitRef="usd">-903000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTQtMy0xLTEtMA_bef11192-059c-4bf8-9742-9f885da7ea4c"
      unitRef="usd">511000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTQtNS0xLTEtMA_cefc65c8-0245-4e2f-a358-ba4d2e9e7ea6"
      unitRef="usd">614000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInEmployeeRelatedLiabilities
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTUtMS0xLTEtMA_5f0ebfd2-45d4-48e5-aecc-c9900e45f05b"
      unitRef="usd">2799000</us-gaap:IncreaseDecreaseInEmployeeRelatedLiabilities>
    <us-gaap:IncreaseDecreaseInEmployeeRelatedLiabilities
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTUtMy0xLTEtMA_8f5d8e9a-6930-4af1-85f5-32592f4dba2c"
      unitRef="usd">4542000</us-gaap:IncreaseDecreaseInEmployeeRelatedLiabilities>
    <us-gaap:IncreaseDecreaseInEmployeeRelatedLiabilities
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTUtNS0xLTEtMA_91f4c3ed-6384-431f-b11a-ca11bcb01a3c"
      unitRef="usd">1219000</us-gaap:IncreaseDecreaseInEmployeeRelatedLiabilities>
    <us-gaap:IncreaseDecreaseInOtherAccruedLiabilities
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTYtMS0xLTEtMA_1f0148eb-b767-4c70-832f-d2d01765e151"
      unitRef="usd">6878000</us-gaap:IncreaseDecreaseInOtherAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInOtherAccruedLiabilities
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTYtMy0xLTEtMA_b7994311-abed-46be-acd6-1dd59756c586"
      unitRef="usd">55000</us-gaap:IncreaseDecreaseInOtherAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInOtherAccruedLiabilities
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTYtNS0xLTEtMA_8a7ae94d-2712-4248-8a30-9bf1e0677c4b"
      unitRef="usd">3281000</us-gaap:IncreaseDecreaseInOtherAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInContractWithCustomerLiability
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTctMS0xLTEtMA_15987639-7603-443e-8d03-f10f00df6aea"
      unitRef="usd">530000</us-gaap:IncreaseDecreaseInContractWithCustomerLiability>
    <us-gaap:IncreaseDecreaseInContractWithCustomerLiability
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTctMy0xLTEtMA_05fb27e4-38b6-46da-af28-9e76d8b441fc"
      unitRef="usd">1193000</us-gaap:IncreaseDecreaseInContractWithCustomerLiability>
    <us-gaap:IncreaseDecreaseInContractWithCustomerLiability
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTctNS0xLTEtMA_20abd0fd-0705-494d-bd5d-0e85445046a4"
      unitRef="usd">-4589000</us-gaap:IncreaseDecreaseInContractWithCustomerLiability>
    <appf:IncreaseDecreaseInOperatingLeases
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTgtMS0xLTEtMA_46431b74-845c-45f6-bbba-935bbd4fdbaf"
      unitRef="usd">-564000</appf:IncreaseDecreaseInOperatingLeases>
    <appf:IncreaseDecreaseInOperatingLeases
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTgtMy0xLTEtMA_ce498f76-788f-4431-ab55-9f7536b5bd9b"
      unitRef="usd">-2662000</appf:IncreaseDecreaseInOperatingLeases>
    <appf:IncreaseDecreaseInOperatingLeases
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTgtNS0xLTEtMA_be50124d-c26b-469b-b6b1-13165bdbff18"
      unitRef="usd">0</appf:IncreaseDecreaseInOperatingLeases>
    <us-gaap:IncreaseDecreaseInOtherOperatingLiabilities
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTktMS0xLTEtMA_36e918ee-e37c-4052-805a-e164bf38a80d"
      unitRef="usd">9366000</us-gaap:IncreaseDecreaseInOtherOperatingLiabilities>
    <us-gaap:IncreaseDecreaseInOtherOperatingLiabilities
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTktMy0xLTEtMA_1739ab4d-98bf-4daf-b23f-63fd12b8ce39"
      unitRef="usd">1241000</us-gaap:IncreaseDecreaseInOtherOperatingLiabilities>
    <us-gaap:IncreaseDecreaseInOtherOperatingLiabilities
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMTktNS0xLTEtMA_e66321a9-d423-4ae8-835e-b29f8f2e1fa2"
      unitRef="usd">6067000</us-gaap:IncreaseDecreaseInOtherOperatingLiabilities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjAtMS0xLTEtMA_597208f1-b92d-4053-8426-15eafa199afb"
      unitRef="usd">48299000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjAtMy0xLTEtMA_cefb0eea-62b0-4c22-963e-476c84a14e72"
      unitRef="usd">38887000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjAtNS0xLTEtMA_9301aee1-17d1-47bf-b10b-a3776a961717"
      unitRef="usd">36268000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:PaymentsToAcquireAvailableForSaleSecuritiesDebt
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjMtMS0xLTEtNDg1_96d38e1b-dca4-4ae9-8a84-2c60bc14c688"
      unitRef="usd">43877000</us-gaap:PaymentsToAcquireAvailableForSaleSecuritiesDebt>
    <us-gaap:PaymentsToAcquireAvailableForSaleSecuritiesDebt
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjMtMy0xLTEtNDg1_e17bf93e-5813-43e5-9cab-7b8809d37842"
      unitRef="usd">25198000</us-gaap:PaymentsToAcquireAvailableForSaleSecuritiesDebt>
    <us-gaap:PaymentsToAcquireAvailableForSaleSecuritiesDebt
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjMtNS0xLTEtNDg1_5021fd7b-b061-4bec-92f4-174d1d652c97"
      unitRef="usd">29516000</us-gaap:PaymentsToAcquireAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjQtMS0xLTEtNDg4_b1f738aa-8bb3-425f-a07f-29238a6c0ada"
      unitRef="usd">16711000</us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjQtMy0xLTEtNDg4_3c3fb816-8c3b-42de-b07c-e20212cf34a5"
      unitRef="usd">2750000</us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjQtNS0xLTEtNDg4_6ef845c7-4acd-4e9a-b340-71e07934fd76"
      unitRef="usd">20900000</us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjUtMS0xLTEtNDky_9585d0dc-2486-4a6f-aafa-72009077d27c"
      unitRef="usd">27330000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjUtMy0xLTEtNDky_b809e478-b599-4638-9446-19de92fe888f"
      unitRef="usd">15660000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjUtNS0xLTEtNDky_ca201dc2-84d2-468b-8f81-767941dfe72a"
      unitRef="usd">32819000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjItMS0xLTEtMA_acc94eeb-2bde-4840-9903-3463e8d0b661"
      unitRef="usd">19038000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjItMy0xLTEtMA_fa35d802-e76b-4c34-9efc-b997bd3387ef"
      unitRef="usd">8084000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjItNS0xLTEtMA_14330f9d-000d-4431-b232-4c9ce96367e9"
      unitRef="usd">2102000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToDevelopSoftware
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjMtMS0xLTEtMA_0cc8bdb5-79de-4fa3-b494-a1ee693c3492"
      unitRef="usd">26042000</us-gaap:PaymentsToDevelopSoftware>
    <us-gaap:PaymentsToDevelopSoftware
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjMtMy0xLTEtMA_bfb42855-ec9f-45fa-9ddb-8a0fad3f3dac"
      unitRef="usd">20998000</us-gaap:PaymentsToDevelopSoftware>
    <us-gaap:PaymentsToDevelopSoftware
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjMtNS0xLTEtMA_c34a9a88-3721-401a-be46-20b87b9c396a"
      unitRef="usd">12304000</us-gaap:PaymentsToDevelopSoftware>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjQtMS0xLTEtMA_f40b4acf-f828-4b55-978c-162da5aee93d"
      unitRef="usd">0</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjQtMy0xLTEtMA_0a07a9f8-baea-4038-a794-e2b24ff328cb"
      unitRef="usd">54004000</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjQtNS0xLTEtMA_31d89dad-4eeb-43a7-8ffa-7cbc4a2c2e26"
      unitRef="usd">14441000</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:ProceedsFromDivestitureOfBusinessesNetOfCashDivested
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjUtMS0xLTEtMA_251ed822-bb9d-400e-9970-29ce6a3a7064"
      unitRef="usd">191427000</us-gaap:ProceedsFromDivestitureOfBusinessesNetOfCashDivested>
    <us-gaap:ProceedsFromDivestitureOfBusinessesNetOfCashDivested
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjUtMy0xLTEtMA_6bd253c6-9ccf-4ef9-a72e-c6b021f5c7c6"
      unitRef="usd">0</us-gaap:ProceedsFromDivestitureOfBusinessesNetOfCashDivested>
    <us-gaap:ProceedsFromDivestitureOfBusinessesNetOfCashDivested
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjUtNS0xLTEtMA_faad3ca7-24ad-4a5d-88cb-1bb4bf70c2d4"
      unitRef="usd">0</us-gaap:ProceedsFromDivestitureOfBusinessesNetOfCashDivested>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjktMS0xLTEtMA_5a9f25c5-2aa6-476f-90a9-693593ce1d98"
      unitRef="usd">146511000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjktMy0xLTEtMA_7c802a66-6068-497b-ae20-1c5f90eed6ca"
      unitRef="usd">-89874000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMjktNS0xLTEtMA_8a120294-710a-4c7b-934d-cd13bfd70459"
      unitRef="usd">-4644000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:ProceedsFromStockOptionsExercised
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMzEtMS0xLTEtMA_3058375b-c74a-4c2e-967c-3007eedb0103"
      unitRef="usd">822000</us-gaap:ProceedsFromStockOptionsExercised>
    <us-gaap:ProceedsFromStockOptionsExercised
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMzEtMy0xLTEtMA_78e84e59-4753-4677-b5f1-0319bc2fd9dd"
      unitRef="usd">553000</us-gaap:ProceedsFromStockOptionsExercised>
    <us-gaap:ProceedsFromStockOptionsExercised
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMzEtNS0xLTEtMA_a046b75a-e9f3-44ee-9c5e-0782ed44ea38"
      unitRef="usd">1035000</us-gaap:ProceedsFromStockOptionsExercised>
    <us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMzQtMS0xLTEtMA_4eae1af7-4f6b-4a1b-b4fb-a60f73b34f5b"
      unitRef="usd">12196000</us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation>
    <us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMzQtMy0xLTEtMA_6f1f4ff2-6b97-474c-b986-406011369923"
      unitRef="usd">6155000</us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation>
    <us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMzQtNS0xLTEtMA_605a0470-5926-4421-9b9c-c02fe3310b56"
      unitRef="usd">3127000</us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation>
    <us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMzctMS0xLTEtNTE2_755ed3c7-8ba9-4b5f-91b7-bf459b86eb59"
      unitRef="usd">5977000</us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities>
    <us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMzctMy0xLTEtNTE2_a74c715b-8b06-4204-a089-ff8b9926d0ba"
      unitRef="usd">0</us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities>
    <us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMzctNS0xLTEtNTE2_b68d783c-c8ce-4fb6-90f2-d5ee28f932ac"
      unitRef="usd">0</us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities>
    <us-gaap:ProceedsFromIssuanceOfSecuredDebt
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMzgtMS0xLTEtNTIw_0057f830-f698-4af9-99c3-a89af470db30"
      unitRef="usd">50752000</us-gaap:ProceedsFromIssuanceOfSecuredDebt>
    <us-gaap:ProceedsFromIssuanceOfSecuredDebt
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMzgtMy0xLTEtNTIw_94bf0c3d-1f3b-4b04-941e-895c1870ee2a"
      unitRef="usd">2169000</us-gaap:ProceedsFromIssuanceOfSecuredDebt>
    <us-gaap:ProceedsFromIssuanceOfSecuredDebt
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMzgtNS0xLTEtNTIw_b6a40b17-5a5d-4344-ada8-9558de69d9f9"
      unitRef="usd">50138000</us-gaap:ProceedsFromIssuanceOfSecuredDebt>
    <us-gaap:RepaymentsOfSecuredDebt
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMzktMS0xLTEtNTIw_67deda97-9134-45bd-800a-e4424c5eed5a"
      unitRef="usd">99565000</us-gaap:RepaymentsOfSecuredDebt>
    <us-gaap:RepaymentsOfSecuredDebt
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMzktMy0xLTEtNTIw_5982e634-61b9-4c43-a818-9e888e6d3402"
      unitRef="usd">3419000</us-gaap:RepaymentsOfSecuredDebt>
    <us-gaap:RepaymentsOfSecuredDebt
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMzktNS0xLTEtNTIw_afe80588-da13-42ca-a6ed-fc1ecbcf1be6"
      unitRef="usd">138000</us-gaap:RepaymentsOfSecuredDebt>
    <us-gaap:PaymentsOfDebtIssuanceCosts
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNDAtMS0xLTEtNTIw_66897df5-c614-4bd4-b6f3-97da165119b6"
      unitRef="usd">0</us-gaap:PaymentsOfDebtIssuanceCosts>
    <us-gaap:PaymentsOfDebtIssuanceCosts
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNDAtMy0xLTEtNTIw_31f564d9-67cd-46bd-a7c4-bc801ed94474"
      unitRef="usd">420000</us-gaap:PaymentsOfDebtIssuanceCosts>
    <us-gaap:PaymentsOfDebtIssuanceCosts
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNDAtNS0xLTEtNTIw_105c4529-28dd-44a9-9236-13d1725f92d0"
      unitRef="usd">0</us-gaap:PaymentsOfDebtIssuanceCosts>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMzgtMS0xLTEtMA_577c9069-4b23-42b5-8975-cb70a3407637"
      unitRef="usd">4194000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMzgtMy0xLTEtMA_c16f3f02-07db-43f6-a845-b483ba86c36c"
      unitRef="usd">0</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfMzgtNS0xLTEtMA_82a3789c-91b1-49bb-8f54-d527b9c323bd"
      unitRef="usd">21562000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNDMtMS0xLTEtMA_ddb821f7-ee8e-4bc6-9d79-76771151abd9"
      unitRef="usd">-70358000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNDMtMy0xLTEtMA_eb517f3f-5dfa-4bac-a8e9-644de0bcd7aa"
      unitRef="usd">-7272000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNDMtNS0xLTEtMA_dc5d7844-0af6-4db9-b982-f5369cf48ce1"
      unitRef="usd">26346000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseExcludingExchangeRateEffect
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNDMtMS0xLTEtOTU3MA_286f8f53-ca16-4bac-acc1-c07c6c5513de"
      unitRef="usd">124452000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseExcludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseExcludingExchangeRateEffect
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNDMtMy0xLTEtOTU3MA_3ca38561-a8ac-4564-8952-2fcac603ef70"
      unitRef="usd">-58259000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseExcludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseExcludingExchangeRateEffect
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNDMtNS0xLTEtOTU3MA_54bbf20c-f9e7-4bbd-a9a1-58f3adc78934"
      unitRef="usd">57970000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseExcludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNDUtMS0xLTEtOTU3OA_fa2b1dca-13f0-48c3-8bbe-1ecfaf760ac7"
      unitRef="usd">16247000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i02d63145a04b47a48a5a20bb6671ce00_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNDUtMy0xLTEtOTU3OA_cd75430e-9125-4f9b-b774-3a66aa016e54"
      unitRef="usd">74506000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i33fd34f1e8d1430f80df86809474ca2c_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNDUtNS0xLTEtOTU3OA_90b4c95f-917a-46fb-9cbd-cd273cdd2bf5"
      unitRef="usd">16536000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNDYtMS0xLTEtOTU3OA_c0defadb-c697-4f6c-8f49-8a26d1113c6e"
      unitRef="usd">140699000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNDYtMy0xLTEtOTU3OA_d7a2a18b-c5aa-4fc3-8bbb-a3b4bb31e9d7"
      unitRef="usd">16247000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i02d63145a04b47a48a5a20bb6671ce00_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNDYtNS0xLTEtOTU3OA_88e610dc-996a-47ba-b943-8414180cff23"
      unitRef="usd">74506000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:InterestPaidNet
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNTYtMS0xLTEtMA_073f168b-a7a3-4769-aa76-31381cae4188"
      unitRef="usd">1815000</us-gaap:InterestPaidNet>
    <us-gaap:InterestPaidNet
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNTYtMy0xLTEtMA_50fc6819-e4df-418a-9645-392c3f244331"
      unitRef="usd">2169000</us-gaap:InterestPaidNet>
    <us-gaap:InterestPaidNet
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNTYtNS0xLTEtMA_426261c6-b200-49ca-81a2-4153b98e63b5"
      unitRef="usd">118000</us-gaap:InterestPaidNet>
    <us-gaap:IncomeTaxesPaid
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNTctMS0xLTEtMA_75a53d3b-0f13-4dde-b794-846d8f93ef83"
      unitRef="usd">85000</us-gaap:IncomeTaxesPaid>
    <us-gaap:IncomeTaxesPaid
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNTctMy0xLTEtMA_3ad74ffa-0aaf-405d-a87d-30c08f1af064"
      unitRef="usd">545000</us-gaap:IncomeTaxesPaid>
    <us-gaap:IncomeTaxesPaid
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNTctNS0xLTEtMA_0f9c853c-50d0-446f-a213-dd8dbdb4bc31"
      unitRef="usd">82000</us-gaap:IncomeTaxesPaid>
    <us-gaap:OperatingLeasePayments
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNjAtMS0xLTEtNzU5Mg_59832228-c638-4d7b-b2ad-1e3d60565505"
      unitRef="usd">2198000</us-gaap:OperatingLeasePayments>
    <us-gaap:OperatingLeasePayments
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNjAtMy0xLTEtNzU5Mg_30621033-9330-4029-9718-e8ce58408a6d"
      unitRef="usd">5007000</us-gaap:OperatingLeasePayments>
    <us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNjEtMS0xLTEtNzU5Mg_73cb1b3f-cd72-4e91-be7d-769905994d5e"
      unitRef="usd">6644000</us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability>
    <us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNjEtMy0xLTEtNzU5Mg_54336fdd-1cd8-4bfc-ade9-a9807044fece"
      unitRef="usd">14986000</us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability>
    <us-gaap:CapitalExpendituresIncurredButNotYetPaid
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNjAtMS0xLTEtMA_145205e3-065f-4bb9-9061-6405a9d2efa7"
      unitRef="usd">370000</us-gaap:CapitalExpendituresIncurredButNotYetPaid>
    <us-gaap:CapitalExpendituresIncurredButNotYetPaid
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNjAtMy0xLTEtMA_dec3cbb0-ca73-4577-bb06-d996564ce50b"
      unitRef="usd">3447000</us-gaap:CapitalExpendituresIncurredButNotYetPaid>
    <us-gaap:CapitalExpendituresIncurredButNotYetPaid
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNjAtNS0xLTEtMA_d9a82898-f322-4d46-96c2-2ca56408d66f"
      unitRef="usd">518000</us-gaap:CapitalExpendituresIncurredButNotYetPaid>
    <appf:CapitalizedComputerSoftwareAdditionsIncurredButNotYetPaid
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNjEtMS0xLTEtMA_0d5983a7-8d85-431a-9bdb-301a61daa533"
      unitRef="usd">383000</appf:CapitalizedComputerSoftwareAdditionsIncurredButNotYetPaid>
    <appf:CapitalizedComputerSoftwareAdditionsIncurredButNotYetPaid
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNjEtMy0xLTEtMA_ca94171c-c7d2-4f41-9441-595f2747c9f6"
      unitRef="usd">1187000</appf:CapitalizedComputerSoftwareAdditionsIncurredButNotYetPaid>
    <appf:CapitalizedComputerSoftwareAdditionsIncurredButNotYetPaid
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNjEtNS0xLTEtMA_fd8df21e-ace8-4e38-b791-a586f4c6d93f"
      unitRef="usd">825000</appf:CapitalizedComputerSoftwareAdditionsIncurredButNotYetPaid>
    <us-gaap:EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsCapitalizedAmount
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNjItMS0xLTEtMA_ff34f5f2-88e2-497a-aad6-cd42325b7128"
      unitRef="usd">2087000</us-gaap:EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsCapitalizedAmount>
    <us-gaap:EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsCapitalizedAmount
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNjItMy0xLTEtMA_826bc353-9036-44be-8c97-c6402589c42e"
      unitRef="usd">1844000</us-gaap:EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsCapitalizedAmount>
    <us-gaap:EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsCapitalizedAmount
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNjItNS0xLTEtMA_3f49c6f0-5124-4a74-9649-f540189e9247"
      unitRef="usd">1087000</us-gaap:EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsCapitalizedAmount>
    <appf:BusinessCombinationConsiderationAccruedButNotYetPaid
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNjMtMS0xLTEtMA_f65ff69b-6e5a-4463-baed-6e1cc4105574"
      unitRef="usd">0</appf:BusinessCombinationConsiderationAccruedButNotYetPaid>
    <appf:BusinessCombinationConsiderationAccruedButNotYetPaid
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNjMtMy0xLTEtMA_7f77a049-a939-400b-8d65-5be1997e1e54"
      unitRef="usd">5977000</appf:BusinessCombinationConsiderationAccruedButNotYetPaid>
    <appf:BusinessCombinationConsiderationAccruedButNotYetPaid
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNjMtNS0xLTEtMA_e75ee41b-7333-42ac-923d-0d086594f985"
      unitRef="usd">0</appf:BusinessCombinationConsiderationAccruedButNotYetPaid>
    <us-gaap:DebtIssuanceCostsIncurredDuringNoncashOrPartialNoncashTransaction
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNjUtMS0xLTEtMA_4e429cc9-a33c-4393-a47d-2561f01d5ff1"
      unitRef="usd">0</us-gaap:DebtIssuanceCostsIncurredDuringNoncashOrPartialNoncashTransaction>
    <us-gaap:DebtIssuanceCostsIncurredDuringNoncashOrPartialNoncashTransaction
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNjUtMy0xLTEtMA_011dc12e-94e3-4596-835a-648afee8b81e"
      unitRef="usd">0</us-gaap:DebtIssuanceCostsIncurredDuringNoncashOrPartialNoncashTransaction>
    <us-gaap:DebtIssuanceCostsIncurredDuringNoncashOrPartialNoncashTransaction
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjE0N2Q2ZjQ4NTQ3NzRjMjViNTA3ZTc4MTM4NDRiOTI1L3RhYmxlcmFuZ2U6MTQ3ZDZmNDg1NDc3NGMyNWI1MDdlNzgxMzg0NGI5MjVfNjUtNS0xLTEtMA_881ae55a-7abd-4c89-a7b8-ec08d19222eb"
      unitRef="usd">371000</us-gaap:DebtIssuanceCostsIncurredDuringNoncashOrPartialNoncashTransaction>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjY4NjFlNWQ2NmEyYzQxYTJiNTQ1YTQ2YTE4MGNkM2M2L3RhYmxlcmFuZ2U6Njg2MWU1ZDY2YTJjNDFhMmI1NDVhNDZhMTgwY2QzYzZfMi0xLTEtMS0w_00b26cb2-6a0a-4ddf-83de-55eeec663a93"
      unitRef="usd">140263000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjY4NjFlNWQ2NmEyYzQxYTJiNTQ1YTQ2YTE4MGNkM2M2L3RhYmxlcmFuZ2U6Njg2MWU1ZDY2YTJjNDFhMmI1NDVhNDZhMTgwY2QzYzZfMi0zLTEtMS0w_414a23bd-321c-4c7c-8468-805549054d5a"
      unitRef="usd">15813000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i02d63145a04b47a48a5a20bb6671ce00_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjY4NjFlNWQ2NmEyYzQxYTJiNTQ1YTQ2YTE4MGNkM2M2L3RhYmxlcmFuZ2U6Njg2MWU1ZDY2YTJjNDFhMmI1NDVhNDZhMTgwY2QzYzZfMi01LTEtMS0w_4074b35a-8d23-4e56-809a-5104936cafb1"
      unitRef="usd">74076000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:RestrictedCashAndCashEquivalents
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjY4NjFlNWQ2NmEyYzQxYTJiNTQ1YTQ2YTE4MGNkM2M2L3RhYmxlcmFuZ2U6Njg2MWU1ZDY2YTJjNDFhMmI1NDVhNDZhMTgwY2QzYzZfMy0xLTEtMS0w_3f726367-2f1c-475c-8e4c-37a925d4f32a"
      unitRef="usd">436000</us-gaap:RestrictedCashAndCashEquivalents>
    <us-gaap:RestrictedCashAndCashEquivalents
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjY4NjFlNWQ2NmEyYzQxYTJiNTQ1YTQ2YTE4MGNkM2M2L3RhYmxlcmFuZ2U6Njg2MWU1ZDY2YTJjNDFhMmI1NDVhNDZhMTgwY2QzYzZfMy0zLTEtMS0w_bb082be9-3f58-4cc1-bf51-7ae40ec56716"
      unitRef="usd">434000</us-gaap:RestrictedCashAndCashEquivalents>
    <us-gaap:RestrictedCashAndCashEquivalents
      contextRef="i02d63145a04b47a48a5a20bb6671ce00_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjY4NjFlNWQ2NmEyYzQxYTJiNTQ1YTQ2YTE4MGNkM2M2L3RhYmxlcmFuZ2U6Njg2MWU1ZDY2YTJjNDFhMmI1NDVhNDZhMTgwY2QzYzZfMy01LTEtMS0w_eb290441-ecd1-4a28-8329-29e0e195edd6"
      unitRef="usd">430000</us-gaap:RestrictedCashAndCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjY4NjFlNWQ2NmEyYzQxYTJiNTQ1YTQ2YTE4MGNkM2M2L3RhYmxlcmFuZ2U6Njg2MWU1ZDY2YTJjNDFhMmI1NDVhNDZhMTgwY2QzYzZfNC0xLTEtMS0w_943bf59c-3c19-4795-b61e-8d70edc3d01f"
      unitRef="usd">140699000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjY4NjFlNWQ2NmEyYzQxYTJiNTQ1YTQ2YTE4MGNkM2M2L3RhYmxlcmFuZ2U6Njg2MWU1ZDY2YTJjNDFhMmI1NDVhNDZhMTgwY2QzYzZfNC0zLTEtMS0w_415239a3-6913-48a8-97d2-6dc229bb1bb9"
      unitRef="usd">16247000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i02d63145a04b47a48a5a20bb6671ce00_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV84OC9mcmFnOmFmNGIzYjZiNThkZTQ1Mzc4NGJmMzMwZDcxYTRiN2RlL3RhYmxlOjY4NjFlNWQ2NmEyYzQxYTJiNTQ1YTQ2YTE4MGNkM2M2L3RhYmxlcmFuZ2U6Njg2MWU1ZDY2YTJjNDFhMmI1NDVhNDZhMTgwY2QzYzZfNC01LTEtMS0w_60a74d38-da22-45e6-8157-4642090bc9c0"
      unitRef="usd">74506000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:NatureOfOperations
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85NC9mcmFnOjA1ZTgyYjkwMzQwMDQ1NzQ5MTc4MDIyZDE4MzZhMGM2L3RleHRyZWdpb246MDVlODJiOTAzNDAwNDU3NDkxNzgwMjJkMTgzNmEwYzZfMjAxMA_3d42ca7a-cfdd-42a5-bb1f-4e16f08b5ec6">Nature of Business&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;AppFolio, Inc. ("we," "us" or "our") provides innovative software, services and data analytics to the real estate industry. Our industry-specific, cloud-based solutions are used primarily by property managers, and also by numerous other constituencies in the property management business ecosystem. These other constituencies include property owners, rental prospects, tenants and service providers, whom we refer to collectively as "users". Although specific functionality varies by product, our core solutions are designed to enable our customers to digitally transform their businesses, address critical business operations and enable exceptional customer service. In addition to our core solutions, we offer an array of optional, but often business-critical, Value+ services that are designed to enhance, automate and streamline processes and workflows that are essential to our customers' businesses. Our Value+ services are generally available on an as-needed basis and enable our customers to adapt our offerings to their specific operational requirements.&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:12pt;font-weight:400;line-height:120%"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;Our solutions and services are designed to be a system of record to automate essential business processes, a system of engagement to enhance business interactions between our customers and their business ecosystems and a system of intelligence designed to leverage data to predict and optimize business workflows in order to enable exceptional customer experiences and increase efficiency across our customers' businesses.&lt;/span&gt;&lt;span style="color:#3051f2;font-family:'Times New Roman',sans-serif;font-size:12pt;font-weight:400;line-height:115%"&gt; &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;Our mobile-optimized software solutions are designed for use across multiple devices and operating systems. Our software solutions are offered as a service, are hosted using a modern cloud-based architecture, and in part, use artificial intelligence technologies. This architecture leads to rich data sets that have a consistent schema across our customer and user base and enables us to deploy data-powered products and services for our customers and users.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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, 2020, 2019 and 2018, our revenue was $310.1 million, $256.0 million and $190.1 million, respectively of which $284.7&#160;million, $231.1&#160;million and $172.4&#160;million, respectively, are derived from our software and services offered to the real estate vertical. During certain periods covered by this Annual Report, we also provided software solutions and services to the legal vertical.&lt;/span&gt;&lt;/div&gt;On September 30, 2020, we completed our divestiture of 100% of the issued and outstanding equity interests of MyCase, Inc. ("MyCase"), a former wholly owned subsidiary that provided such legal practice and case management software solutions to our legal customers. We sold MyCase to Mockingbird AcquisitionCo Inc., a Delaware corporation (&#x201c;Buyer&#x201d;) affiliated with funds advised by Apax Partners LLP, for $193.0&#160;million pursuant to a Stock Purchase Agreement, dated September 7, 2020 (the &#x201c;Purchase Agreement&#x201d;), by and among Buyer, us and MyCase (the &#x201c;MyCase Transaction&#x201d;). In connection with the closing of the MyCase Transaction, and in accordance with the terms of the Purchase Agreement, we entered into certain ancillary agreements with MyCase, including relating to certain post-closing transition services to be provided by us to MyCase at fair market value, as well as an intellectual property licensing agreement for certain software and patents for which no ongoing licensing fees will be received. We recognized a pre-tax gain on the sale of $187.7&#160;million on the MyCase Transaction.</us-gaap:NatureOfOperations>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85NC9mcmFnOjA1ZTgyYjkwMzQwMDQ1NzQ5MTc4MDIyZDE4MzZhMGM2L3RleHRyZWdpb246MDVlODJiOTAzNDAwNDU3NDkxNzgwMjJkMTgzNmEwYzZfMTA5OTUxMTY0MTg1NQ_6c1cb365-d486-4c8e-a01f-bb24ee9b5fae"
      unitRef="usd">310100000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85NC9mcmFnOjA1ZTgyYjkwMzQwMDQ1NzQ5MTc4MDIyZDE4MzZhMGM2L3RleHRyZWdpb246MDVlODJiOTAzNDAwNDU3NDkxNzgwMjJkMTgzNmEwYzZfMTA5OTUxMTY0MTg2Mg_d96c39f2-328b-464c-b2e8-7e938c22b831"
      unitRef="usd">256000000.0</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85NC9mcmFnOjA1ZTgyYjkwMzQwMDQ1NzQ5MTc4MDIyZDE4MzZhMGM2L3RleHRyZWdpb246MDVlODJiOTAzNDAwNDU3NDkxNzgwMjJkMTgzNmEwYzZfMTA5OTUxMTY0MTg2OQ_9eeb5ff7-294c-480c-b81c-6ba51be2d8e2"
      unitRef="usd">190100000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ia520f44bc1bd4a69967d96420c544e6b_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85NC9mcmFnOjA1ZTgyYjkwMzQwMDQ1NzQ5MTc4MDIyZDE4MzZhMGM2L3RleHRyZWdpb246MDVlODJiOTAzNDAwNDU3NDkxNzgwMjJkMTgzNmEwYzZfNjU5NzA2OTc4MDMwNw_7a3f35a4-7a28-40c3-8e7a-d9c13fcfddec"
      unitRef="usd">284700000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i7b9747939dce47579d55925da13ff57c_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85NC9mcmFnOjA1ZTgyYjkwMzQwMDQ1NzQ5MTc4MDIyZDE4MzZhMGM2L3RleHRyZWdpb246MDVlODJiOTAzNDAwNDU3NDkxNzgwMjJkMTgzNmEwYzZfNjU5NzA2OTc4MDMyMw_d0114ee8-df94-4517-82c0-69addd5261b3"
      unitRef="usd">231100000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i791ab114ec454d5b90c722c12318b53c_D20180101-20181231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85NC9mcmFnOjA1ZTgyYjkwMzQwMDQ1NzQ5MTc4MDIyZDE4MzZhMGM2L3RleHRyZWdpb246MDVlODJiOTAzNDAwNDU3NDkxNzgwMjJkMTgzNmEwYzZfNjU5NzA2OTc4MDMzOQ_26f0331b-fc48-449c-8f7d-961dd0856487"
      unitRef="usd">172400000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <appf:DisposalGroupIncludingDiscontinuedOperationOwnershipPercentageInDisposedSubsidiary
      contextRef="i25006d5d67bf47229384f8b1670eb090_I20200930"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85NC9mcmFnOjA1ZTgyYjkwMzQwMDQ1NzQ5MTc4MDIyZDE4MzZhMGM2L3RleHRyZWdpb246MDVlODJiOTAzNDAwNDU3NDkxNzgwMjJkMTgzNmEwYzZfNzE0NjgyNTU5NDI1OQ_2bdd218b-0fde-4805-be25-43b36d358570"
      unitRef="number">1</appf:DisposalGroupIncludingDiscontinuedOperationOwnershipPercentageInDisposedSubsidiary>
    <us-gaap:DisposalGroupIncludingDiscontinuedOperationConsideration
      contextRef="i25006d5d67bf47229384f8b1670eb090_I20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85NC9mcmFnOjA1ZTgyYjkwMzQwMDQ1NzQ5MTc4MDIyZDE4MzZhMGM2L3RleHRyZWdpb246MDVlODJiOTAzNDAwNDU3NDkxNzgwMjJkMTgzNmEwYzZfNzE0NjgyNTU5NDI0Mw_3cac8d4b-ec2f-4b08-8cd9-52dc31792ea9"
      unitRef="usd">193000000.0</us-gaap:DisposalGroupIncludingDiscontinuedOperationConsideration>
    <us-gaap:DiscontinuedOperationGainLossFromDisposalOfDiscontinuedOperationBeforeIncomeTax
      contextRef="ibbf341c3878c4cc892fbbf6b21f3784b_D20200930-20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85NC9mcmFnOjA1ZTgyYjkwMzQwMDQ1NzQ5MTc4MDIyZDE4MzZhMGM2L3RleHRyZWdpb246MDVlODJiOTAzNDAwNDU3NDkxNzgwMjJkMTgzNmEwYzZfMTA5OTUxMTYzNTIzNw_427bd64b-e1eb-4cef-8951-dcfe3a113799"
      unitRef="usd">187700000</us-gaap:DiscontinuedOperationGainLossFromDisposalOfDiscontinuedOperationBeforeIncomeTax>
    <us-gaap:BasisOfPresentationAndSignificantAccountingPoliciesTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM0Nzg_a271bf75-c0dc-4e4f-969a-abc7f847c7e1">Summary of Significant Accounting Policies&lt;div style="margin-bottom:6pt;margin-top:10pt;text-indent:36pt"&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 Significant Accounting Policies&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 were prepared in accordance with accounting principles generally accepted in the United States of America (&#x201c;GAAP&#x201d;).&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Reclassification&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We reclassified certain amounts in our Consolidated Balance Sheet in the prior year to confirm to the current year's presentation.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Principles of Consolidation &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 include the operations of AppFolio, Inc. and its wholly owned subsidiaries. All intercompany balances and transactions have been eliminated in consolidation. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Our investment in SecureDocs, Inc. (&#x201c;SecureDocs&#x201d;) is accounted for under the equity method of accounting as we have the ability to exert significant influence, but do not control and are not the primary beneficiary of the entity. Our investment in SecureDocs is not material and any income (loss) activity is not material individually or in the aggregate to our Consolidated Financial Statements for any period presented. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 in conformity with GAAP requires management to make estimates and assumptions that affect the reported amounts of assets and liabilities and the disclosure of contingent assets and liabilities at the dates of the financial statements, and the reported amounts of revenue, expenses, other income, and provision for income taxes during the reporting period. Assets and liabilities which are subject to judgment and use of estimates include the fair value of assets and liabilities assumed in business combinations, fair value of financial instruments, capitalized software development costs, period of benefit associated with deferred costs, incremental borrowing rate used to measure operating lease liabilities, the recoverability of goodwill and long-lived assets, income taxes, useful lives associated with property and equipment and intangible assets, contingencies, and valuation and assumptions underlying stock-based compensation and other equity instruments. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;During early calendar year 2020, the novel coronavirus disease ("COVID-19") spread globally, including to every state in the United States. The global pandemic has created and may continue to create significant uncertainty in a wide variety of industries and markets and has prompted many federal, state, local, and foreign governments to adopt various orders and restrictions in an attempt to control the spread and mitigate the impact of the disease, which may reduce demand for our core solutions and/or Value+ services, impact the productivity of our workforce, reduce our access to capital, and harm our business and results of operations. These potential impacts are only amplified by the length of time they remain in place, as the cumulative effect upon our customers and their businesses may only exacerbate potential harm to our business and results of operations.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In light of the unknown duration and severity of COVID-19, we face a greater degree of uncertainty than normal in making the judgments and estimates needed to apply our significant accounting policies. We assessed certain accounting matters that generally require consideration of forecasted financial information in context with the information reasonably available to us and the unknown future impacts of COVID-19 as of December&#160;31, 2020 and through the date of this report. The accounting matters assessed included, but were not limited to, our allowance for credit losses, the carrying value of goodwill and other long-lived assets, performance-based compensation and income taxes.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 the date of our Consolidated Financial Statements, we are not aware of any specific event or circumstance that would require us to update our estimates or judgments or to revise the carrying value of our assets or liabilities. However, these estimates and judgments may change as new events occur and additional information is obtained, which may result in changes being recognized in our consolidated financial statements in future periods. While we considered the effects of COVID-19 in our estimates and assumptions, due to the level of uncertainty regarding the economic and operational impacts of COVID-19 on our business, there may be other judgments and assumptions that we have not considered. Such judgments and assumptions could result in a meaningful impact on our Consolidated Financial Statements in future periods. Actual results could differ from those estimates and any such differences may have a material impact on our Consolidated Financial Statements.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Segment Information &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Our chief operating decision maker reviews financial information presented on an aggregated and consolidated basis, together with revenue information for our core solutions, Value+ and other service offerings, principally to make decisions about how to allocate resources and to measure our performance. Accordingly, management has determined that we have one reportable and operating segment. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Concentrations of Credit Risk &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 us to credit risk consist principally of cash, cash equivalents, restricted cash, accounts receivable, investment securities and notes receivable. We maintain cash balances at financial institutions in excess of amounts insured by United States government agencies or payable by the United States government directly. We place our cash with high credit, quality financial institutions. We invest in investment securities with a minimum rating of A by Standard &amp;amp; Poor's or A-1 by Moody's and regularly monitor our investment security portfolio for changes in credit ratings.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Concentrations of credit risk with respect to accounts receivable and revenue are limited due to a large, diverse customer base. No individual customer represented 10% or more of accounts receivable at December&#160;31, 2020 and 2019 or revenue for the years ended December&#160;31, 2020, 2019 and 2018. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 Measurements &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Fair value is defined as the exchange price that would be received for an asset or paid to transfer a liability (an exit price) in the principal or most advantageous market for the asset or liability in an orderly transaction between market participants on the measurement date. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Valuation techniques used to measure fair value must maximize the use of observable inputs and minimize the use of unobservable inputs. Accounting Standard Codification 820, &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;Fair Value Measurements and Disclosures&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;, describes a fair value hierarchy based on three levels of inputs, of which the first two are considered observable and the last unobservable, that may be used to measure fair value, which are the following: &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;padding-left:47.25pt;text-align:justify;text-indent:36pt"&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;Level 1 &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;- Quoted prices in active markets for identical assets or liabilities or funds. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;padding-left:47.25pt;text-align:justify;text-indent:36pt"&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;Level 2 &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;- Inputs other than Level 1 that are observable, either directly or indirectly, such as quoted prices for similar assets or liabilities; quoted prices in markets that are not active; or other inputs that are observable or can be corroborated by observable market data for substantially the full term of the assets or liabilities. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;padding-left:47.25pt;text-align:justify;text-indent:36pt"&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;Level 3 &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;- Unobservable inputs that are supported by little or no market activity and that are significant to the fair value of the assets or liabilities. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 Restricted Cash &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We consider all highly liquid investments, readily convertible to cash, and which have a remaining maturity date of three months or less at the date of purchase, to be cash equivalents. Cash and cash equivalents are recorded at fair value and consist primarily of bank deposits, treasury securities, and money market funds. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Restricted cash of $0.4 million at December&#160;31, 2020 and 2019, is comprised of certificates of deposits relating to collateral requirements for customer automated clearing house and credit card chargebacks and minimum collateral requirements for our insurance services, which are recorded in other long-term assets. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:1pt;font-style:italic;font-weight:700;line-height:120%"&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&lt;/span&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;Investment Securities&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Our investment securities currently consist of corporate bonds, United States government agency securities and treasury securities. We classify investment securities as available-for-sale at the time of purchase and reevaluate such classification at each balance sheet date. All investments are recorded at estimated fair value. Unrealized gains and losses for available-for-sale investment securities are included in accumulated other comprehensive income, a component of stockholders&#x2019; equity. We classify our investments as current when the period of time between the reporting date and the contractual maturity is twelve months or less and as noncurrent when the period of time between the reporting date and the contractual maturity is more than twelve months.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;For available-for-sale debt securities in an unrealized loss position, we first assess whether we intend to sell, or whether it is more likely than not that we will be required to sell the security before recovery of its amortized cost basis. If either of these criteria is met, the security&#x2019;s amortized cost basis is written down to fair value through income. For securities in an unrealized loss position that do not meet these criteria, we evaluate whether the decline in fair value has resulted from&#160;credit loss&#160;or other factors. If this assessment indicates a&#160;credit loss&#160;exists, the credit-related portion of the loss is recorded as an allowance for losses on the security. No allowance for credit losses for available-for-sale investment securities was recorded as of December&#160;31, 2020.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Accounts Receivable &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 are recorded at the invoiced amount, net of an allowance for credit losses. The allowance for credit losses is based on historical loss experience, the number of days that receivables are past due, and an evaluation of the potential risk of loss associated with delinquent accounts. Accounts receivable considered uncollectible are charged against the allowance for credit losses when identified. We do not have any off-balance sheet credit exposure related to our customers. At December&#160;31, 2020 and 2019, our allowance for credit losses was not material. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 is stated at cost, less accumulated depreciation. Depreciation is calculated using the straight-line method over the estimated useful lives of assets. The estimated useful lives of our property and equipment are as follows: &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:47.438%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:2.723%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:47.439%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&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:10pt;font-weight:700;line-height:100%"&gt;Asset Type&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:10pt;font-weight:700;line-height:100%"&gt;Depreciation Period&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:10pt;font-weight:400;line-height:100%"&gt;Computer equipment&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:2px 1pt;text-align:center;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;3 years&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:10pt;font-weight:400;line-height:100%"&gt;Furniture and fixtures&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:center;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;7 years&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:10pt;font-weight:400;line-height:100%"&gt;Office equipment&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: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:10pt;font-weight:400;line-height:100%"&gt;3 to 5 years&lt;/span&gt;&lt;/div&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:10pt;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="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:10pt;font-weight:400;line-height:100%"&gt;Shorter of remaining life of lease or asset life&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Repair and maintenance costs are expensed as incurred. Renewals and improvements are capitalized. Assets disposed of or retired are removed from the cost and accumulated depreciation accounts and any resulting gain or loss is reflected in our results of operations. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Leases &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We determine if an arrangement is a lease at inception. Operating leases are included in &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;prepaid expenses and other current assets&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;, &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;operating lease ROU assets&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;, &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;other current liabilities&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 &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;operating lease liabilities&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; on our Consolidated Balance Sheets.&#160;Operating lease ROU assets and operating lease liabilities are recognized based on the present value of the future minimum lease payments, over the lease term at commencement date. As none of our leases provide an implicit rate, we use our incremental borrowing rate based on the information available at commencement date in determining the present value of future payments. The operating lease ROU assets also include any lease payments made to the lessor before or at the lease commencement date and excludes lease incentives received and initial direct costs incurred. Our lease terms may include options to extend the lease when it is reasonably certain that we will exercise that option. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Lease expense for minimum lease payments is recognized on a straight-line basis over the lease term. We have lease arrangements with lease and non-lease components, which are generally accounted for as a single lease component. Leases with an initial term of twelve months or less are not recorded on the balance sheet; we recognize lease expense for these leases on a straight-line basis over the lease term.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Capitalized Software Development Costs&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Software development cost consist of certain payroll and stock compensation costs incurred to develop functionality of our internal-use software solutions. We capitalize certain software development costs for new offerings as well as significant upgrades and enhancements to our existing software solutions. Capitalized software development costs are amortized using the straight-line method over an estimated useful life of three years. We do not transfer ownership of our software, license, or lease our software to third parties. We believe there are two key estimates within the capitalized software balance, which are the determination of the useful life of the software and the determination of the amounts to be capitalized.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We determined that a three year life is appropriate for our internal-use software based on our best estimate of the useful life of the internally developed software after considering factors such as continuous developments in the technology, obsolescence and anticipated life of the service offering before significant upgrades. Based on our prior experience, internally generated software will generally remain in use for a minimum of three years before being significantly replaced or modified to keep up with evolving customer and company needs. While we do not anticipate any significant changes to this three year estimate, a change in this estimate could produce a material impact on our financial statements.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We determine the amount of internal software costs to be capitalized based on the amount of time spent by our software engineers on projects. Costs associated with building or significantly enhancing our software solutions and new internally built software solutions are capitalized, while costs associated with planning new developments and maintaining our software solutions are expensed as incurred. There is judgment involved in estimating the stage of development as well as estimating time allocated to a particular project. A significant change in the time spent on each project could have a material impact on the amount capitalized and related amortization expense.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 and Intangible Assets &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Goodwill represents the excess of the purchase price over the estimated fair value of the net tangible and identifiable intangible assets acquired in business combinations. Goodwill is tested for impairment at least annually at the reporting unit level or at other times if an event occurs or circumstances change that would more likely than not reduce the fair value of a reporting unit below its carrying amount.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We have the option to assess goodwill for possible impairment by performing a qualitative analysis to determine whether the existence of events or circumstances leads to a determination that it is more likely than not that the fair value of a reporting unit is less than its carrying amount. A quantitative assessment is performed if the qualitative assessment results in a more-likely-than-not determination or if a qualitative assessment is not performed. The quantitative assessment considers whether the carrying amount of a reporting unit exceeds its fair value, in which case an impairment charge is recorded to the extent that the reporting unit&#x2019;s carrying value exceeds its fair value. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We have one reporting unit and we test for goodwill impairment annually during the fourth quarter of the calendar year. Additionally, in connection with the disposal of goodwill associated with the MyCase Transaction, we performed a goodwill impairment assessment as of September 30, 2020 on our remaining goodwill balance. Based on the assessments performed at September 30, 2020 and November 1, 2020, we determined it was unlikely that our reporting unit fair value was less than its carrying value and no quantitative impairment test assessment was required. There were no indicators that our goodwill has become impaired since that date, and as such, there was no impairment charges recorded.  &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;No impairment losses were recorded for goodwill during the years ended December 31, 2020, 2019 and 2018. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Intangible assets primarily consist of acquired database and technology, non-compete agreements, customer and partner relationships, trademarks and trade names, domain names and patents, which are recorded at cost, less accumulated amortization. We determine the appropriate useful life of our intangible assets by performing an analysis of expected cash flows of the acquired assets. Intangible assets are amortized over their estimated useful lives on a straight-line basis, which approximates the pattern in which the economic benefits of the assets are consumed. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Impairment of Long-Lived Assets &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We assess the recoverability of our long-lived assets when events or changes in circumstances indicate that the carrying value of an asset may not be recoverable or that the useful lives of those assets are no longer appropriate. An impairment charge would be recognized when the carrying amount of a long-lived asset or asset group is not recoverable and exceeds its fair value. The carrying amount of a long-lived asset or asset group is not recoverable if it exceeds the sum of the undiscounted cash flows expected to result from the use and eventual disposition of the asset or asset group. There were no impairment charges related to the identified long-lived assets for the years ended December&#160;31, 2020, 2019 and 2018. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Business Combinations &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The results of a business acquired in a business combination are included in our Consolidated Financial Statements from the date of acquisition. We allocate the purchase price, including the fair value of contingent consideration, to the identifiable assets and liabilities of the acquired business at their acquisition date fair values. The excess of the purchase price over the amount allocated to the identifiable assets and liabilities, if any, is recorded as goodwill. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Determining the fair value of assets acquired and liabilities assumed requires management to make significant judgments and estimates, including the selection of valuation methodologies, estimates of future revenue and cash flows, discount rates and selection of comparable companies. We engage the assistance of valuation specialists in concluding on fair value measurements in connection with determining fair values of assets acquired and liabilities assumed in a business combination.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Acquisition-related transaction costs are not included as a component of consideration transferred, but are accounted for as an operating expense in the period in which the costs are incurred. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We generate revenue from our customers primarily for subscriptions to access our core solutions and Value+ services for our cloud-based software solutions. Revenue is recognized upon transfer of control of promised services in an amount that reflects the consideration we expect to receive in exchange for those services. We enter into contracts that can include various combinations of services, which are generally capable of being distinct, distinct within the context of the contract, and accounted for as separate performance obligations. Revenue is recognized net of any taxes collected from customers, which are subsequently remitted to governmental authorities. Refer to Note 15, &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;Revenue and Other Information&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; for the disaggregated breakdown of revenue between core solutions, Value+ services and other revenue. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Core Solutions&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We charge our customers on a subscription basis for our core solutions. Our subscription fees are designed to scale to the size of our customers' businesses. Subscription fees for our core solutions are charged on a per-unit per-month basis for our property management software solution and on a per-user per-month basis for our legal software solution. Our customers do not have rights to the underlying software code of our solutions, and, accordingly, we recognize subscription revenue over time on a straight-line basis over the contract term beginning on the date that our service is made available to the customer. The term of our core solutions subscription agreements typically ranges from one month to one year. We typically invoice our customers for subscription services in monthly or annual installments, in advance of the subscription period. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Value+ Services&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We charge our customers on a subscription or usage basis for our Value+ services. Subscription-based fees are charged on a per-unit basis. We typically invoice our customers for subscription-based services in monthly installments, in advance of the subscription period. We recognize revenue for subscription-based services over time on a straight-line basis over the contract term beginning on the date that our service is made available to the customer. Usage-based fees are charged on a flat rate per transaction basis with no minimum usage commitments. We recognize revenue for usage-based services in the period the service is rendered. We generally invoice our customers for usage-based services on a monthly basis for services rendered in the preceding month. In addition, some subscription or usage-based Value+ services, such as fees for electronic payment services, are paid by either our customers or clients of our customers at the time the services are rendered. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We work with third-party partners to provide certain of our Value+ services. For these Value+ services, we evaluate whether we are the principal, and report revenue on a gross basis, or the agent, and report revenue on a net basis. In this assessment we consider if we obtain control of the specified services before they are transferred to the customer, as well as other indicators such as whether we are the party primarily responsible for fulfillment, and whether we have discretion in establishing price.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Other Revenue&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Other revenue include fees from one-time services related to the implementation of our software solutions and other recurring or one-time fees related to our customers who are not otherwise using our core solutions. This includes legacy customers of businesses we have acquired where the customers haven't migrated to our core solutions. The fees for implementation and data migration services are billed upon signing our core subscription contract and are not recognized until the core solution is accessible and fully functional for our customer's use. Other services are billed when the services rendered are completed and delivered to the customer or billed in advance and deferred over the subscription period.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Contracts with Multiple Performance Obligations&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Many of our contracts with customers contain multiple performance obligations. Determining whether products and services are considered distinct performance obligations that should be accounted for separately versus together may require judgment. We account for individual performance obligations separately if they are distinct. The performance obligations for these contracts include access and use of our core solutions, implementation services, and customer support. Access and use of our core solutions and implementation services are considered distinct. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The transaction price is allocated to each performance obligation on a relative standalone selling price basis. Judgment is required to determine the standalone selling price for each distinct performance obligation. We typically have more than one standalone selling price for individual products and services due to the stratification of those products and services by customers and circumstances. In these instances, we determine the standalone selling price based on our overall pricing objectives, taking into consideration customer demographics and other factors. Fees are fixed based on rates specified in the subscription agreements, which do not provide for any refunds or adjustments. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Deferred Revenue&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We record deferred revenue when cash payments are received in advance of our performance. During the twelve months ended December&#160;31, 2020 and 2019, we recognized revenue of $4.5 million and $3.4 million, respectively, that were included in the deferred revenue balances at December&#160;31, 2019 and 2018, respectively. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Our payment terms vary by the type of our customer and the products or services offered. The time between invoicing and when payment is due is not significant. In instances where the timing of revenue recognition differs from the timing of invoicing, we have determined that our contracts do not include a significant financing component.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Practical Expedients&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In determining the transaction price, we have applied the practical expedient which allows us not to adjust the consideration for the effects of the time value of money as long as the time between when we transfer the promised service to a customer and when a customer pays is one year or less. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We do not disclose the value of unsatisfied performance obligations for contracts with an original expected term of one year or less.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We recognize revenue in proportion to the amount we have the right to invoice for certain core solutions and Value+ services revenue, as that amount corresponds directly with our performance completed to date. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 Costs &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Deferred costs, which primarily consist of sales commissions, are considered incremental and recoverable costs of obtaining a contract with a customer. These costs are deferred and then amortized on a straight-line basis over a period of benefit that we have determined to be three years. We typically do not pay commissions for contract renewals. We determined the period of benefit by taking into consideration our customer contract term, the useful life of our internal-use software, average customer life, and other factors. Amortization expense for the deferred costs is allocated based on the employee's department and included within&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;sales and marketing expense in the accompanying Consolidated Statements of Operations. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Deferred costs were $10.3 million and $9.5 million at December&#160;31, 2020 and 2019, respectively, of which $5.5 million and $4.8 million, respectively, are included in &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;prepaid expenses and other current assets&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 $4.8 million and $4.6 million, respectively, are included in &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;other assets&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; in the accompanying Consolidated Balance Sheets. Amortization expense for deferred costs was $5.8 million, $4.2 million, and $2.0 million for the years ended December&#160;31, 2020, 2019, and 2018, respectively. For the&#160;years ended&#160;December&#160;31, 2020 and 2019, no impairments were identified in relation to the costs capitalized for the periods presented.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 includes the fees paid to these third-party service providers (including legal fees and costs associated with the delivery and provision of those services, as well as loss reserves and other costs associated with our legal liability to landlord insurance services), which vary both in cost and as a percent of revenue for each Value+ service offering, personnel-related costs (including salaries, performance-based compensation, benefits, and stock-based compensation) for our employees focused on customer service and the support of our operations, platform infrastructure costs (such as data center operations and hosting-related costs), payment processing fees and allocated shared costs. Cost of revenue excludes depreciation of property and equipment, and amortization of capitalized software development costs and intangible assets.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Sales and Marketing &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Sales and marketing expense consists of personnel-related costs (including salaries, sales commissions, performance-based compensation, benefits, and stock-based compensation) for our employees focused on sales and marketing, costs associated with sales and marketing activities, and allocated shared and other costs. Marketing activities include advertising, online lead generation, lead nurturing, customer and industry events, and the creation of industry-related content and collateral. Sales commissions and other incremental costs to acquire customers and grow adoption and utilization of our Value+ services by our new and existing customers are deferred and then amortized on a straight-line basis over a period of benefit, which we have determined to be three years. We focus our sales and marketing efforts on generating awareness of our software solutions, creating sales leads, establishing and promoting our brands, and cultivating an educated community of successful and vocal customers. Advertising expenses were $7.0 million, $5.8 million and $4.5 million for each of the years ended December&#160;31, 2020, 2019 and 2018, respectively, and are expensed as incurred. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Research and Product Development &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Research and product development expense consists of personnel-related costs (including salaries, performance-based compensation, benefits, and stock-based compensation) for our employees focused on research and product development, fees for third-party development resources, and allocated shared and other costs. Our research and product development efforts are focused on enhancing functionality and the ease of use of our existing software solutions by adding new core functionality, Value+ services and other improvements, as well as developing new products and services for new and existing markets. We capitalize our software development costs which meet the criteria for capitalization. Amortization of capitalized software development costs is included in depreciation and amortization expense.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;General and Administrative &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;General and administrative expense consists of personnel-related costs (including salaries, a majority of total performance-based compensation, benefits, and stock-based compensation) for employees in our executive, finance, information technology, human resources, legal, compliance, corporate development and administrative organizations. In addition, general and administrative expense includes fees for third-party professional services (including audit, legal, compliance, tax, and consulting services), transaction costs related to business combinations and divestitures, regulatory fines and penalties, other corporate expenses, and allocated shared costs.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Depreciation and Amortization &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 expense includes depreciation of property and equipment, amortization of capitalized software development costs, and amortization of intangible assets. We depreciate or amortize property and equipment, software development costs, and intangible assets over their expected useful lives on a straight-line basis, which approximates the pattern in which the economic benefits of the assets are consumed. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We recognize stock-based compensation expense for stock-based awards granted to employees and directors that can be settled in shares of our common stock. We estimate the fair value of stock options and performance-based stock options ("PSOs"), using the Black-Scholes option-pricing model. We estimate the fair value of restricted stock awards ("RSAs"), restricted stock units ("RSUs") and performance-based RSUs or performance share units ("PSUs") based on the fair value of our common stock on the date of grant.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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, 2020, 2019, and 2018 we did not grant time-based stock options or PSOs. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Restricted Stock Units&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;RSUs generally vest in equal tranches over &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMjk4OTM_373b3e65-6783-4f52-baa6-3662f8cea7f0"&gt;four&lt;/span&gt; annual periods and are expensed on a straight-line basis over the vesting period. The shares underlying the RSU grants are not issued and outstanding until the applicable vesting date. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Performance-Based Equity Awards &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Our PSUs include performance conditions that require us to estimate the probable outcome of the performance condition. This assessment is based on management's judgment using internally developed forecasts and assessed at each reporting period. Compensation cost is recorded if it is probable that the performance condition will be achieved. Adjustments to compensation expense are made each period based on changes in our estimate of the number of PSUs that are probable of vesting. PSUs will vest upon achievement of the relevant performance metric once such calculation is reviewed and approved by our Board of Directors. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Forfeiture Rate&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We estimate a forfeiture rate to calculate our stock-based compensation expense for our stock-based awards. The forfeiture rate is based on an analysis of actual forfeitures. We will continue to evaluate the appropriateness of the forfeiture rate based on actual forfeiture experience, analysis of employee turnover, and other factors. Changes in the estimated forfeiture rate can have a significant impact on our stock-based compensation expense as the cumulative effect of adjusting the rate is recognized in the period the estimated forfeiture rate is changed. If a revised forfeiture rate is higher than the previously-estimated forfeiture rate, an adjustment is made that will result in a decrease to our stock-based compensation expense recognized in our Consolidated Financial Statements. If a revised forfeiture rate is lower than the previously-estimated forfeiture rate, an adjustment is made that will result in an increase to our stock-based compensation expense recognized in our Consolidated Financial Statements. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We recognize deferred tax liabilities and assets for the expected future tax consequences of temporary differences between the carrying amounts and the tax bases of assets and liabilities. Deferred income tax assets and liabilities are measured using enacted tax rates expected to apply to taxable income in the years in which those temporary differences are expected to be recovered or settled. The effect of a change in tax rates on deferred tax assets and liabilities is recognized in the Consolidated Statements of Operations in the period that includes the enactment date. A valuation allowance is recorded when it is more likely than not that some of the deferred tax assets will not be realized. In evaluating the need for a valuation allowance, management considers the weighting of all available positive and negative evidence, which includes, among other things, the nature, frequency and severity of current and cumulative taxable income or losses, future projections of profitability, and the duration of statutory carryforward periods.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;Judgment is required to measure the amount of tax benefits that can be recognized associated with uncertain tax positions. We recognize the tax benefit from an uncertain tax position only if it is more likely than not that the tax position will be sustained on examination by the taxing authorities, based on the technical merits of the position. The tax benefits recognized in our Consolidated Financial Statements from such positions are then measured based on the largest benefit that has a greater than 50% likelihood of being realized. We recognize interest and penalties accrued with respect to uncertain tax positions, if any, in our provision for income taxes in the Consolidated Statements of Operations. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Net Income per Share&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Basic net income per share includes no dilution and is computed by dividing net income for the period by the weighted average number of common shares outstanding during the period. Diluted net income per share is computed by dividing net income for the period by the weighted average number of shares of common stock and potentially dilutive common stock outstanding during the period. The dilutive effect of outstanding options and equity incentive awards is reflected in diluted net income per share by application of the treasury stock method. The calculation of diluted net income per share excludes all anti-dilutive common shares.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The net income per common share was the same for our Class A and Class B common shares because they are entitled to the same liquidation and dividend rights and are therefore combined in the table below. The following table presents a reconciliation of our weighted average number of Class A and Class B common shares used to compute net income per share (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:69.281%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.284%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.284%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.285%"/&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="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;Year 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:8pt;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;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;2019&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;2018&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Weighted average common shares outstanding&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;34,269&#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="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:10pt;font-weight:400;line-height:100%"&gt;34,020&#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="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:10pt;font-weight:400;line-height:100%"&gt;34,139&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Less: Weighted average unvested restricted shares subject to repurchase&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:10pt;font-weight:400;line-height:100%"&gt;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:10pt;font-weight:400;line-height:100%"&gt;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:10pt;font-weight:400;line-height:100%"&gt;11&#160;&lt;/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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Weighted average common shares outstanding; basic&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;34,264&#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="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:10pt;font-weight:400;line-height:100%"&gt;34,016&#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="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:10pt;font-weight:400;line-height:100%"&gt;34,128&#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 style="height:15pt"&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;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;border-top:3pt double #000000;padding:0 1pt"/&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:10pt;font-weight:400;line-height:100%"&gt;Weighted average common shares outstanding; basic&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:10pt;font-weight:400;line-height:100%"&gt;34,264&#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:10pt;font-weight:400;line-height:100%"&gt;34,016&#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:10pt;font-weight:400;line-height:100%"&gt;34,128&#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:10pt;font-weight:400;line-height:100%"&gt;Plus:  Weighted average options, restricted stock units and restricted shares used to compute diluted net income per common share&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:10pt;font-weight:400;line-height:100%"&gt;1,449&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;1,551&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;1,434&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Weighted average common shares outstanding; diluted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;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:10pt;font-weight:400;line-height:100%"&gt;35,713&#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 colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;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:10pt;font-weight:400;line-height:100%"&gt;35,567&#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 colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;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:10pt;font-weight:400;line-height:100%"&gt;35,562&#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:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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, 2020, 2019 and 2018, an aggregate of 79,000, 187,000 and 358,000 shares, respectively, underlying PSOs and PSUs were not included in the computations of diluted and anti-dilutive shares as they are considered contingently issuable upon satisfaction of pre-defined performance measures and their respective performance measures have not been met. RSUs with an anti-dilutive effect were excluded from the calculation of weighted average number of shares used to compute diluted net income per common share and they were not material for the years ended December&#160;31, 2020, 2019 and 2018. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 Adopted in 2018&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In May 2014, the Financial Accounting Standards Board ("FASB") issued the New Revenue Standard, which requires an entity to recognize the amount of revenue to which it expects to be entitled for the transfer of promised goods or services to customers. The New Revenue Standard also includes Subtopic 340-40, &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;Other Assets and Deferred Costs - Contracts with Customers&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;, which discusses the deferral of incremental costs of obtaining a contract with a customer.  &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We adopted the New Revenue Standard at January 1, 2018 using the modified retrospective transition method applied to those contracts which were not completed at that date. We recognized the cumulative effect of initially applying the New Revenue Standard as an adjustment to the opening balance of retained earnings. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The adoption of the New Revenue Standard did not have an impact on our revenues. It did, however, have a significant impact related to the deferral of incremental costs of obtaining contracts. Prior to the adoption of the New Revenue Standard, our commissions were expensed as incurred. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The cumulative effects of the changes made to our Consolidated Balance Sheet at January 1, 2018 for the adoption of the New Revenue Standard were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:11pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:54.894%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.788%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.969%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.788%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.969%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.792%"/&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: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;December 31, 2017&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;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;Balance at&lt;br/&gt;January 1, 2018&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:10pt;font-weight:700;line-height:100%"&gt;Assets&lt;/span&gt;&lt;/td&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;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;Prepaid expenses and other current assets&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,546&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;1,148&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;5,694&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Other assets&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:10pt;font-weight:400;line-height:100%"&gt;1,238&#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:10pt;font-weight:400;line-height:100%"&gt;1,816&#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:10pt;font-weight:400;line-height:100%"&gt;3,054&#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 style="height:15pt"&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;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Equity&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;/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:10pt;font-weight:400;line-height:100%"&gt;Accumulated deficit&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(67,247)&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;2,964&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(64,283)&lt;/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-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 Adopted in 2019&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 2016, the FASB issued ASU No. 2016-02, &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;Leases&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; ("ASU 2016-02"), which requires an entity to recognize ROU assets and lease liabilities on its balance sheet and disclose key information about leasing arrangements. ASU 2016-02 offers specific accounting guidance for a lessee, a lessor and sale and leaseback transactions. Lessees and lessors are required to disclose qualitative and quantitative information about leasing arrangements to enable a user of the financial statements to assess the amount, timing and uncertainty of cash flows arising from leases. In July&#160;2018, the FASB issued ASU No. 2018-11, Leases (Topic 842): Targeted Improvements ("ASU 2018-11"). Among other things, ASU 2018-11 provides administrative relief by allowing entities to implement the lease standard on a modified retrospective basis (the "Optional Transition Method"). Effectively, the Optional Transition Method permits us to adopt the lease standard through a cumulative effect adjustment to our opening balance sheet as of January 1, 2019, and report under the new lease standard on a post-adoption basis. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We adopted ASU 2016-02 effective January 1, 2019, using the Optional Transition Method. We elected the package of practical expedients permitted under the transition guidance, which allows us to carry forward our historical lease classification, our assessment of whether a contract is or contains a lease, and our initial direct costs for any leases that existed prior to adoption of the new lease standard. The comparative information has not been recast and continues to be reported under the accounting standards in effect for those periods. We updated our accounting policies, processes, internal controls and information systems that were required to meet the new lease standard's reporting and disclosure requirements.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The adoption of ASU 2016-02 had a material impact on our Consolidated Balance Sheets, but did not have an impact on our Consolidated Statements of Operations or our Consolidated Statements of Cash Flows. The most significant impact was the recognition of ROU assets and lease liabilities for operating leases.&#160;We also reclassified prepaid and deferred rent to the ROU asset balance as of January 1, 2019.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The cumulative effect of the changes made to our Consolidated Balance Sheet at January 1, 2019 for the adoption of the new lease standard was as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:11pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:54.958%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.768%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.967%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.768%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.967%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.772%"/&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: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;December 31, 2018&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;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;Balance at&lt;br/&gt;January 1, 2019&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:10pt;font-weight:700;line-height:100%"&gt;Assets&lt;/span&gt;&lt;/td&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;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;Prepaid expenses and other current assets&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;11,775&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(317)&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;11,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:10pt;font-weight:400;line-height:100%"&gt;Operating lease right-of-use assets&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;16,945&#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:10pt;font-weight:400;line-height:100%"&gt;16,945&#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 style="height:15pt"&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;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Liabilities and Stockholders&#x2019; Equity &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;/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:10pt;font-weight:400;line-height:100%"&gt;Other current liabilities&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;1,447&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;3,493&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,940&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Operating lease liabilities&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;20,056&#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:10pt;font-weight:400;line-height:100%"&gt;20,056&#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:10pt;font-weight:400;line-height:100%"&gt;Other long-term liabilities&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:10pt;font-weight:400;line-height:100%"&gt;7,080&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(6,921)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;159&#160;&lt;/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-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 Adopted in 2020&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In June 2016, the FASB issued Accounting Standards Update ("ASU") No. 2016-13,&#160;&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;Financial Instruments - Credit Losses (Topic 326): Measurement of Credit Losses on Financial Instruments &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;("ASU 2016-13"), which amends the current accounting guidance and requires the measurement of all expected losses based on historical experience, current conditions and reasonable and supportable forecasts. This guidance amends the accounting for credit losses for available-for-sale investment securities and purchased financial assets with credit deterioration. We adopted ASU 2016-13 on January 1, 2020. The adoption of this guidance did not have a material impact on our financial condition, results of operations, cash flows or disclosures. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 2018, the FASB issued ASU No. 2018-15,&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;&#160;Intangibles&#x2014;Goodwill and Other&#x2014;Internal-Use Software (Subtopic 350-40): Customer&#x2019;s Accounting for Implementation Costs Incurred in a Cloud Computing Arrangement That Is a Service Contract &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;("ASU 2018-15"), a series of amendments which align the requirements for capitalizing implementation costs incurred in a hosting arrangement that is a service contract with the requirements for capitalizing implementation costs incurred to develop or obtain internal-use software (and hosting arrangements that include an internal use software license). The accounting for the service element of a hosting arrangement that is a service contract is not affected by these amendments. We adopted ASU 2018-15 on January 1, 2020. The adoption of this guidance did not have a material impact on our financial condition, results of operations, cash flows or disclosures. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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="text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;In December 2019, the FASB issued ASU No. 2019-12,&#160;&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:115%"&gt;Income Taxes (Topic 740): Simplifying the Accounting for Income Taxes&#160;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;("ASU 2019-12").&#160;This amendment was issued to simplify the accounting for income taxes by removing certain exceptions for recognizing deferred taxes, performing intraperiod allocation, and calculating income taxes in interim periods. Further, ASU 2019-12 adds guidance to reduce complexity in certain areas, including recognizing deferred taxes for tax basis goodwill and allocating taxes to members of a consolidated group. This guidance also requires an entity to reflect the effect of an enacted change in tax laws or rates in its effective income tax rate in the first interim period that includes the enactment date of the new legislation, aligning the timing of recognition of the effects from enacted tax law changes on the effective income tax rate with the effects on deferred income tax assets and liabilities. Under existing guidance, an entity recognizes the effects of the enacted tax law change on the effective income tax rate in the period that includes the effective date of the tax law. This guidance is effective for interim and annual periods beginning after December 15, 2020 with early adoption permitted. We do not expect the adoption of this guidance to have a material impact on our financial condition, results of operations, cash flows or disclosures.&lt;/span&gt;&lt;/div&gt;</us-gaap:BasisOfPresentationAndSignificantAccountingPoliciesTextBlock>
    <us-gaap:BasisOfAccountingPolicyPolicyTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM0ODQ_d333f25b-b1c6-45b2-a8f1-c164a5a799a9">&lt;div style="margin-bottom:6pt;margin-top:10pt;text-indent:36pt"&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 Significant Accounting Policies&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 were prepared in accordance with accounting principles generally accepted in the United States of America (&#x201c;GAAP&#x201d;).&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Reclassification&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We reclassified certain amounts in our Consolidated Balance Sheet in the prior year to confirm to the current year's presentation.&lt;/span&gt;&lt;/div&gt;</us-gaap:BasisOfAccountingPolicyPolicyTextBlock>
    <us-gaap:ConsolidationPolicyTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM1OTQ_cb3e9c60-5225-4c2d-880b-231eab966ae2">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Principles of Consolidation &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 include the operations of AppFolio, Inc. and its wholly owned subsidiaries. All intercompany balances and transactions have been eliminated in consolidation. &lt;/span&gt;&lt;/div&gt;Our investment in SecureDocs, Inc. (&#x201c;SecureDocs&#x201d;) is accounted for under the equity method of accounting as we have the ability to exert significant influence, but do not control and are not the primary beneficiary of the entity. Our investment in SecureDocs is not material and any income (loss) activity is not material individually or in the aggregate to our Consolidated Financial Statements for any period presented.</us-gaap:ConsolidationPolicyTextBlock>
    <us-gaap:UseOfEstimates
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM0OTc_77d8ce59-ba8c-48bc-b4e4-608b11fbafca">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 in conformity with GAAP requires management to make estimates and assumptions that affect the reported amounts of assets and liabilities and the disclosure of contingent assets and liabilities at the dates of the financial statements, and the reported amounts of revenue, expenses, other income, and provision for income taxes during the reporting period. Assets and liabilities which are subject to judgment and use of estimates include the fair value of assets and liabilities assumed in business combinations, fair value of financial instruments, capitalized software development costs, period of benefit associated with deferred costs, incremental borrowing rate used to measure operating lease liabilities, the recoverability of goodwill and long-lived assets, income taxes, useful lives associated with property and equipment and intangible assets, contingencies, and valuation and assumptions underlying stock-based compensation and other equity instruments. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;During early calendar year 2020, the novel coronavirus disease ("COVID-19") spread globally, including to every state in the United States. The global pandemic has created and may continue to create significant uncertainty in a wide variety of industries and markets and has prompted many federal, state, local, and foreign governments to adopt various orders and restrictions in an attempt to control the spread and mitigate the impact of the disease, which may reduce demand for our core solutions and/or Value+ services, impact the productivity of our workforce, reduce our access to capital, and harm our business and results of operations. These potential impacts are only amplified by the length of time they remain in place, as the cumulative effect upon our customers and their businesses may only exacerbate potential harm to our business and results of operations.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In light of the unknown duration and severity of COVID-19, we face a greater degree of uncertainty than normal in making the judgments and estimates needed to apply our significant accounting policies. We assessed certain accounting matters that generally require consideration of forecasted financial information in context with the information reasonably available to us and the unknown future impacts of COVID-19 as of December&#160;31, 2020 and through the date of this report. The accounting matters assessed included, but were not limited to, our allowance for credit losses, the carrying value of goodwill and other long-lived assets, performance-based compensation and income taxes.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 the date of our Consolidated Financial Statements, we are not aware of any specific event or circumstance that would require us to update our estimates or judgments or to revise the carrying value of our assets or liabilities. However, these estimates and judgments may change as new events occur and additional information is obtained, which may result in changes being recognized in our consolidated financial statements in future periods. While we considered the effects of COVID-19 in our estimates and assumptions, due to the level of uncertainty regarding the economic and operational impacts of COVID-19 on our business, there may be other judgments and assumptions that we have not considered. Such judgments and assumptions could result in a meaningful impact on our Consolidated Financial Statements in future periods. Actual results could differ from those estimates and any such differences may have a material impact on our Consolidated Financial Statements.&lt;/span&gt;&lt;/div&gt;</us-gaap:UseOfEstimates>
    <us-gaap:SegmentReportingPolicyPolicyTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM1MjY_1967ea5b-9583-4cd3-bddd-db0cec94f502">Segment Information Our chief operating decision maker reviews financial information presented on an aggregated and consolidated basis, together with revenue information for our core solutions, Value+ and other service offerings, principally to make decisions about how to allocate resources and to measure our performance. Accordingly, management has determined that we have one reportable and operating segment.</us-gaap:SegmentReportingPolicyPolicyTextBlock>
    <us-gaap:NumberOfOperatingSegments
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMjcwOA_7c069ed2-dbad-4d3c-ab5c-40be62780691"
      unitRef="segment">1</us-gaap:NumberOfOperatingSegments>
    <us-gaap:NumberOfReportableSegments
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMjcwOA_b7eadce2-21c3-4706-843e-81f8b03691f0"
      unitRef="segment">1</us-gaap:NumberOfReportableSegments>
    <us-gaap:ConcentrationRiskCreditRisk
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM1MTE_742f7151-ba99-4fac-9c47-6bda29f8856c">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Concentrations of Credit Risk &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 us to credit risk consist principally of cash, cash equivalents, restricted cash, accounts receivable, investment securities and notes receivable. We maintain cash balances at financial institutions in excess of amounts insured by United States government agencies or payable by the United States government directly. We place our cash with high credit, quality financial institutions. We invest in investment securities with a minimum rating of A by Standard &amp;amp; Poor's or A-1 by Moody's and regularly monitor our investment security portfolio for changes in credit ratings.&lt;/span&gt;&lt;/div&gt;Concentrations of credit risk with respect to accounts receivable and revenue are limited due to a large, diverse customer base.</us-gaap:ConcentrationRiskCreditRisk>
    <us-gaap:FairValueMeasurementPolicyPolicyTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM1MzI_00a7eaf0-bc01-4491-9d4a-4bc055557347">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 Measurements &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Fair value is defined as the exchange price that would be received for an asset or paid to transfer a liability (an exit price) in the principal or most advantageous market for the asset or liability in an orderly transaction between market participants on the measurement date. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Valuation techniques used to measure fair value must maximize the use of observable inputs and minimize the use of unobservable inputs. Accounting Standard Codification 820, &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;Fair Value Measurements and Disclosures&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;, describes a fair value hierarchy based on three levels of inputs, of which the first two are considered observable and the last unobservable, that may be used to measure fair value, which are the following: &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;padding-left:47.25pt;text-align:justify;text-indent:36pt"&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;Level 1 &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;- Quoted prices in active markets for identical assets or liabilities or funds. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;padding-left:47.25pt;text-align:justify;text-indent:36pt"&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;Level 2 &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;- Inputs other than Level 1 that are observable, either directly or indirectly, such as quoted prices for similar assets or liabilities; quoted prices in markets that are not active; or other inputs that are observable or can be corroborated by observable market data for substantially the full term of the assets or liabilities. &lt;/span&gt;&lt;/div&gt;Level 3 - Unobservable inputs that are supported by little or no market activity and that are significant to the fair value of the assets or liabilities.</us-gaap:FairValueMeasurementPolicyPolicyTextBlock>
    <us-gaap:CashAndCashEquivalentsRestrictedCashAndCashEquivalentsPolicy
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM1Nzg_36ab5480-209b-4ca2-803e-7c2d71229eb6">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 Restricted Cash &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We consider all highly liquid investments, readily convertible to cash, and which have a remaining maturity date of three months or less at the date of purchase, to be cash equivalents. Cash and cash equivalents are recorded at fair value and consist primarily of bank deposits, treasury securities, and money market funds. &lt;/span&gt;&lt;/div&gt;Restricted cash of $0.4 million at December&#160;31, 2020 and 2019, is comprised of certificates of deposits relating to collateral requirements for customer automated clearing house and credit card chargebacks and minimum collateral requirements for our insurance services, which are recorded in other long-term assets.</us-gaap:CashAndCashEquivalentsRestrictedCashAndCashEquivalentsPolicy>
    <us-gaap:RestrictedCashAndCashEquivalents
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNTMzMQ_2859b537-f349-493f-9d2a-dcb457e018dc"
      unitRef="usd">400000</us-gaap:RestrictedCashAndCashEquivalents>
    <us-gaap:RestrictedCashAndCashEquivalents
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNTMzMQ_c7c1fb82-fd6f-4284-bf98-8fffb795b8b9"
      unitRef="usd">400000</us-gaap:RestrictedCashAndCashEquivalents>
    <us-gaap:MarketableSecuritiesPolicy
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM1OTA_1d214c1a-9689-4b4d-8fa0-4fb9d2d39fc9">Investment Securities&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Our investment securities currently consist of corporate bonds, United States government agency securities and treasury securities. We classify investment securities as available-for-sale at the time of purchase and reevaluate such classification at each balance sheet date. All investments are recorded at estimated fair value. Unrealized gains and losses for available-for-sale investment securities are included in accumulated other comprehensive income, a component of stockholders&#x2019; equity. We classify our investments as current when the period of time between the reporting date and the contractual maturity is twelve months or less and as noncurrent when the period of time between the reporting date and the contractual maturity is more than twelve months.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;For available-for-sale debt securities in an unrealized loss position, we first assess whether we intend to sell, or whether it is more likely than not that we will be required to sell the security before recovery of its amortized cost basis. If either of these criteria is met, the security&#x2019;s amortized cost basis is written down to fair value through income. For securities in an unrealized loss position that do not meet these criteria, we evaluate whether the decline in fair value has resulted from&#160;credit loss&#160;or other factors. If this assessment indicates a&#160;credit loss&#160;exists, the credit-related portion of the loss is recorded as an allowance for losses on the security. No allowance for credit losses for available-for-sale investment securities was recorded as of December&#160;31, 2020.&lt;/span&gt;&lt;/div&gt;</us-gaap:MarketableSecuritiesPolicy>
    <us-gaap:ProvisionForOtherCreditLosses
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNjU5NzA2OTkxNDc2Mg_34279cf4-5ca9-4edc-b471-e8ef7d8362c7"
      unitRef="usd">0</us-gaap:ProvisionForOtherCreditLosses>
    <us-gaap:TradeAndOtherAccountsReceivablePolicy
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM0OTk_711c3b34-d381-4266-89fb-bd3cd20daad1">Accounts Receivable Accounts receivable are recorded at the invoiced amount, net of an allowance for credit losses. The allowance for credit losses is based on historical loss experience, the number of days that receivables are past due, and an evaluation of the potential risk of loss associated with delinquent accounts. Accounts receivable considered uncollectible are charged against the allowance for credit losses when identified. We do not have any off-balance sheet credit exposure related to our customers.</us-gaap:TradeAndOtherAccountsReceivablePolicy>
    <us-gaap:PropertyPlantAndEquipmentPolicyTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM0NzU_d3dcbc99-d8ae-4a29-9030-68294cf8c724">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 is stated at cost, less accumulated depreciation. Depreciation is calculated using the straight-line method over the estimated useful lives of assets. The estimated useful lives of our property and equipment are as follows: &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:47.438%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:2.723%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:47.439%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&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:10pt;font-weight:700;line-height:100%"&gt;Asset Type&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:10pt;font-weight:700;line-height:100%"&gt;Depreciation Period&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:10pt;font-weight:400;line-height:100%"&gt;Computer equipment&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:2px 1pt;text-align:center;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;3 years&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:10pt;font-weight:400;line-height:100%"&gt;Furniture and fixtures&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:center;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;7 years&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:10pt;font-weight:400;line-height:100%"&gt;Office equipment&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: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:10pt;font-weight:400;line-height:100%"&gt;3 to 5 years&lt;/span&gt;&lt;/div&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:10pt;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="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:10pt;font-weight:400;line-height:100%"&gt;Shorter of remaining life of lease or asset life&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Repair and maintenance costs are expensed as incurred. Renewals and improvements are capitalized. Assets disposed of or retired are removed from the cost and accumulated depreciation accounts and any resulting gain or loss is reflected in our results of operations.</us-gaap:PropertyPlantAndEquipmentPolicyTextBlock>
    <us-gaap:PropertyPlantAndEquipmentTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM1NDk_43df8cea-c96e-4fb3-841b-137fd74a1954">The estimated useful lives of our property and equipment are as follows: &lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:47.438%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:2.723%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:47.439%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&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:10pt;font-weight:700;line-height:100%"&gt;Asset Type&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:10pt;font-weight:700;line-height:100%"&gt;Depreciation Period&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:10pt;font-weight:400;line-height:100%"&gt;Computer equipment&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:2px 1pt;text-align:center;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;3 years&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:10pt;font-weight:400;line-height:100%"&gt;Furniture and fixtures&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:center;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;7 years&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:10pt;font-weight:400;line-height:100%"&gt;Office equipment&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: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:10pt;font-weight:400;line-height:100%"&gt;3 to 5 years&lt;/span&gt;&lt;/div&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:10pt;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="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:10pt;font-weight:400;line-height:100%"&gt;Shorter of remaining life of lease or asset life&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div style="margin-top:10pt;text-indent:36pt"&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 consists of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.349%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.809%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.810%"/&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="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="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"&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;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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2019&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Data center and computer equipment&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,597&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;7,983&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Furniture and fixtures&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:10pt;font-weight:400;line-height:100%"&gt;6,021&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;3,953&#160;&lt;/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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Office equipment&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:10pt;font-weight:400;line-height:100%"&gt;3,324&#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:10pt;font-weight:400;line-height:100%"&gt;1,141&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Leasehold improvements&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:10pt;font-weight:400;line-height:100%"&gt;22,952&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;6,192&#160;&lt;/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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Construction in process&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:10pt;font-weight:400;line-height:100%"&gt;617&#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:10pt;font-weight:400;line-height:100%"&gt;7,118&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross property and equipment&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;37,511&#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:10pt;font-weight:400;line-height:100%"&gt;26,387&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Less: Accumulated depreciation&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:10pt;font-weight:400;line-height:100%"&gt;(11,072)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(11,643)&lt;/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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total property and equipment, net&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 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;$&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:10pt;font-weight:400;line-height:100%"&gt;26,439&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;14,744&#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:PropertyPlantAndEquipmentUsefulLife
      contextRef="i775737621cf8499caf903c657527ac4f_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjJkZWMxNjg3OTVhOTRkMDhiYWEyNWYzNTVkNDIzMDhhL3RhYmxlcmFuZ2U6MmRlYzE2ODc5NWE5NGQwOGJhYTI1ZjM1NWQ0MjMwOGFfMS0yLTEtMS0yMzI4_e86ed828-7d5e-422b-8f96-a8e206ec624b">P3Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="id0bed8b25dc44f859958e2715fbff35b_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjJkZWMxNjg3OTVhOTRkMDhiYWEyNWYzNTVkNDIzMDhhL3RhYmxlcmFuZ2U6MmRlYzE2ODc5NWE5NGQwOGJhYTI1ZjM1NWQ0MjMwOGFfMi0yLTEtMS02NDYx_2867a501-8e03-400b-9da4-0ba646f5c58c">P7Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i3596c1bc1a4c48b782bc4a165bea69ca_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjJkZWMxNjg3OTVhOTRkMDhiYWEyNWYzNTVkNDIzMDhhL3RhYmxlcmFuZ2U6MmRlYzE2ODc5NWE5NGQwOGJhYTI1ZjM1NWQ0MjMwOGFfMy0yLTEtMS0xMzQ0L3RleHRyZWdpb246MDZkNGNiODM0ZDkzNDg4Mzk1OTIwYzA0Yzc3MTk3ZDRfMTA5OTUxMTYyNzc5Mw_8add381d-c1b5-440f-8459-9fe74dc2bc9d">P3Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i8247a60257294e31ae341ca5c7084724_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjJkZWMxNjg3OTVhOTRkMDhiYWEyNWYzNTVkNDIzMDhhL3RhYmxlcmFuZ2U6MmRlYzE2ODc5NWE5NGQwOGJhYTI1ZjM1NWQ0MjMwOGFfMy0yLTEtMS0xMzQ0L3RleHRyZWdpb246MDZkNGNiODM0ZDkzNDg4Mzk1OTIwYzA0Yzc3MTk3ZDRfMTA5OTUxMTYyNzc5Nw_e1e8c1a4-6910-49a6-afd8-a2d299cf8386">P5Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:LesseeLeasesPolicyTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM0OTE_03fc6a1b-9bf5-4421-a3e2-f81e2e02ed4b">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Leases &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We determine if an arrangement is a lease at inception. Operating leases are included in &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;prepaid expenses and other current assets&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;, &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;operating lease ROU assets&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;, &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;other current liabilities&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 &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;operating lease liabilities&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; on our Consolidated Balance Sheets.&#160;Operating lease ROU assets and operating lease liabilities are recognized based on the present value of the future minimum lease payments, over the lease term at commencement date. As none of our leases provide an implicit rate, we use our incremental borrowing rate based on the information available at commencement date in determining the present value of future payments. The operating lease ROU assets also include any lease payments made to the lessor before or at the lease commencement date and excludes lease incentives received and initial direct costs incurred. Our lease terms may include options to extend the lease when it is reasonably certain that we will exercise that option. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Lease expense for minimum lease payments is recognized on a straight-line basis over the lease term. We have lease arrangements with lease and non-lease components, which are generally accounted for as a single lease component. Leases with an initial term of twelve months or less are not recorded on the balance sheet; we recognize lease expense for these leases on a straight-line basis over the lease term.&lt;/span&gt;&lt;/div&gt;</us-gaap:LesseeLeasesPolicyTextBlock>
    <us-gaap:InternalUseSoftwarePolicy
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM2MjM_c467e7eb-b6a3-4451-a496-47044c13d6aa">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Capitalized Software Development Costs&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Software development cost consist of certain payroll and stock compensation costs incurred to develop functionality of our internal-use software solutions. We capitalize certain software development costs for new offerings as well as significant upgrades and enhancements to our existing software solutions. Capitalized software development costs are amortized using the straight-line method over an estimated useful life of three years. We do not transfer ownership of our software, license, or lease our software to third parties. We believe there are two key estimates within the capitalized software balance, which are the determination of the useful life of the software and the determination of the amounts to be capitalized.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We determined that a three year life is appropriate for our internal-use software based on our best estimate of the useful life of the internally developed software after considering factors such as continuous developments in the technology, obsolescence and anticipated life of the service offering before significant upgrades. Based on our prior experience, internally generated software will generally remain in use for a minimum of three years before being significantly replaced or modified to keep up with evolving customer and company needs. While we do not anticipate any significant changes to this three year estimate, a change in this estimate could produce a material impact on our financial statements.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We determine the amount of internal software costs to be capitalized based on the amount of time spent by our software engineers on projects. Costs associated with building or significantly enhancing our software solutions and new internally built software solutions are capitalized, while costs associated with planning new developments and maintaining our software solutions are expensed as incurred. There is judgment involved in estimating the stage of development as well as estimating time allocated to a particular project. A significant change in the time spent on each project could have a material impact on the amount capitalized and related amortization expense.&lt;/span&gt;&lt;/div&gt;</us-gaap:InternalUseSoftwarePolicy>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i629deff96d36469d8b91b79f2637153d_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfOTg5NQ_abfff17c-51bf-4f94-ae97-d0b1c9a8c927">P3Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i629deff96d36469d8b91b79f2637153d_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNzE0NjgyNTcyNzg5NQ_3ec3ae3b-5670-430a-848f-20faf1e807e0">P3Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i629deff96d36469d8b91b79f2637153d_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNjU5NzA2OTkxNDc2MQ_958a62e7-b225-4574-8d65-936d9b49bb6a">P3Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i629deff96d36469d8b91b79f2637153d_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNzE0NjgyNTcyNzg5Ng_9f828805-bd68-452c-a6ba-47f5f2a533a0">P3Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:GoodwillAndIntangibleAssetsPolicyTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM0OTI_cd615e19-f853-45a4-a96f-64ea4194e113">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 and Intangible Assets &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Goodwill represents the excess of the purchase price over the estimated fair value of the net tangible and identifiable intangible assets acquired in business combinations. Goodwill is tested for impairment at least annually at the reporting unit level or at other times if an event occurs or circumstances change that would more likely than not reduce the fair value of a reporting unit below its carrying amount.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We have the option to assess goodwill for possible impairment by performing a qualitative analysis to determine whether the existence of events or circumstances leads to a determination that it is more likely than not that the fair value of a reporting unit is less than its carrying amount. A quantitative assessment is performed if the qualitative assessment results in a more-likely-than-not determination or if a qualitative assessment is not performed. The quantitative assessment considers whether the carrying amount of a reporting unit exceeds its fair value, in which case an impairment charge is recorded to the extent that the reporting unit&#x2019;s carrying value exceeds its fair value. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We have one reporting unit and we test for goodwill impairment annually during the fourth quarter of the calendar year. Additionally, in connection with the disposal of goodwill associated with the MyCase Transaction, we performed a goodwill impairment assessment as of September 30, 2020 on our remaining goodwill balance. Based on the assessments performed at September 30, 2020 and November 1, 2020, we determined it was unlikely that our reporting unit fair value was less than its carrying value and no quantitative impairment test assessment was required. There were no indicators that our goodwill has become impaired since that date, and as such, there was no impairment charges recorded.  &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;No impairment losses were recorded for goodwill during the years ended December 31, 2020, 2019 and 2018. &lt;/span&gt;&lt;/div&gt;Intangible assets primarily consist of acquired database and technology, non-compete agreements, customer and partner relationships, trademarks and trade names, domain names and patents, which are recorded at cost, less accumulated amortization. We determine the appropriate useful life of our intangible assets by performing an analysis of expected cash flows of the acquired assets. Intangible assets are amortized over their estimated useful lives on a straight-line basis, which approximates the pattern in which the economic benefits of the assets are consumed.</us-gaap:GoodwillAndIntangibleAssetsPolicyTextBlock>
    <us-gaap:NumberOfReportingUnits
      contextRef="i9ef50e190b0446b6b41c5f0c12f3822b_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMTI3NTQ_8962b89f-510e-4061-91d2-be8ed04281f7"
      unitRef="reportingunit">1</us-gaap:NumberOfReportingUnits>
    <us-gaap:GoodwillImpairmentLossNetOfTax
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNzE0NjgyNTcyNzg5OA_06c6f32a-ace1-4850-9427-4cdf0b559912"
      unitRef="usd">0</us-gaap:GoodwillImpairmentLossNetOfTax>
    <us-gaap:GoodwillImpairmentLossNetOfTax
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNzE0NjgyNTcyNzg5OA_6535a8eb-2b58-48f1-989a-997cbea3789d"
      unitRef="usd">0</us-gaap:GoodwillImpairmentLossNetOfTax>
    <us-gaap:GoodwillImpairmentLossNetOfTax
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNzE0NjgyNTcyNzg5OA_7dfc8a99-bd5c-482f-b1cd-d1f252e9d3c3"
      unitRef="usd">0</us-gaap:GoodwillImpairmentLossNetOfTax>
    <us-gaap:ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM1OTI_236f77d0-d23d-4f05-8d07-6c73fd1f49b0">Impairment of Long-Lived Assets We assess the recoverability of our long-lived assets when events or changes in circumstances indicate that the carrying value of an asset may not be recoverable or that the useful lives of those assets are no longer appropriate. An impairment charge would be recognized when the carrying amount of a long-lived asset or asset group is not recoverable and exceeds its fair value. The carrying amount of a long-lived asset or asset group is not recoverable if it exceeds the sum of the undiscounted cash flows expected to result from the use and eventual disposition of the asset or asset group.</us-gaap:ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock>
    <us-gaap:ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMTQ1Mjc_27878548-53ee-4fa2-b1b2-3717b79c6fcd"
      unitRef="usd">0</us-gaap:ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMTQ1Mjc_514c3bc6-e1a7-4a6f-99fc-c838c296b08f"
      unitRef="usd">0</us-gaap:ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMTQ1Mjc_cde63b38-a654-435f-a934-8a1aa8c35200"
      unitRef="usd">0</us-gaap:ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill>
    <us-gaap:BusinessCombinationsPolicy
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM0ODY_5d77f156-f928-468f-bb91-906c70532713">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Business Combinations &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The results of a business acquired in a business combination are included in our Consolidated Financial Statements from the date of acquisition. We allocate the purchase price, including the fair value of contingent consideration, to the identifiable assets and liabilities of the acquired business at their acquisition date fair values. The excess of the purchase price over the amount allocated to the identifiable assets and liabilities, if any, is recorded as goodwill. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Determining the fair value of assets acquired and liabilities assumed requires management to make significant judgments and estimates, including the selection of valuation methodologies, estimates of future revenue and cash flows, discount rates and selection of comparable companies. We engage the assistance of valuation specialists in concluding on fair value measurements in connection with determining fair values of assets acquired and liabilities assumed in a business combination.&lt;/span&gt;&lt;/div&gt;Acquisition-related transaction costs are not included as a component of consideration transferred, but are accounted for as an operating expense in the period in which the costs are incurred.</us-gaap:BusinessCombinationsPolicy>
    <us-gaap:RevenueFromContractWithCustomerPolicyTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM1NDI_db77513a-13cd-400d-a74d-9169d9216ac8">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We generate revenue from our customers primarily for subscriptions to access our core solutions and Value+ services for our cloud-based software solutions. Revenue is recognized upon transfer of control of promised services in an amount that reflects the consideration we expect to receive in exchange for those services. We enter into contracts that can include various combinations of services, which are generally capable of being distinct, distinct within the context of the contract, and accounted for as separate performance obligations. Revenue is recognized net of any taxes collected from customers, which are subsequently remitted to governmental authorities. Refer to Note 15, &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;Revenue and Other Information&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; for the disaggregated breakdown of revenue between core solutions, Value+ services and other revenue. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Core Solutions&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We charge our customers on a subscription basis for our core solutions. Our subscription fees are designed to scale to the size of our customers' businesses. Subscription fees for our core solutions are charged on a per-unit per-month basis for our property management software solution and on a per-user per-month basis for our legal software solution. Our customers do not have rights to the underlying software code of our solutions, and, accordingly, we recognize subscription revenue over time on a straight-line basis over the contract term beginning on the date that our service is made available to the customer. The term of our core solutions subscription agreements typically ranges from one month to one year. We typically invoice our customers for subscription services in monthly or annual installments, in advance of the subscription period. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Value+ Services&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We charge our customers on a subscription or usage basis for our Value+ services. Subscription-based fees are charged on a per-unit basis. We typically invoice our customers for subscription-based services in monthly installments, in advance of the subscription period. We recognize revenue for subscription-based services over time on a straight-line basis over the contract term beginning on the date that our service is made available to the customer. Usage-based fees are charged on a flat rate per transaction basis with no minimum usage commitments. We recognize revenue for usage-based services in the period the service is rendered. We generally invoice our customers for usage-based services on a monthly basis for services rendered in the preceding month. In addition, some subscription or usage-based Value+ services, such as fees for electronic payment services, are paid by either our customers or clients of our customers at the time the services are rendered. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We work with third-party partners to provide certain of our Value+ services. For these Value+ services, we evaluate whether we are the principal, and report revenue on a gross basis, or the agent, and report revenue on a net basis. In this assessment we consider if we obtain control of the specified services before they are transferred to the customer, as well as other indicators such as whether we are the party primarily responsible for fulfillment, and whether we have discretion in establishing price.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Other Revenue&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Other revenue include fees from one-time services related to the implementation of our software solutions and other recurring or one-time fees related to our customers who are not otherwise using our core solutions. This includes legacy customers of businesses we have acquired where the customers haven't migrated to our core solutions. The fees for implementation and data migration services are billed upon signing our core subscription contract and are not recognized until the core solution is accessible and fully functional for our customer's use. Other services are billed when the services rendered are completed and delivered to the customer or billed in advance and deferred over the subscription period.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Contracts with Multiple Performance Obligations&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Many of our contracts with customers contain multiple performance obligations. Determining whether products and services are considered distinct performance obligations that should be accounted for separately versus together may require judgment. We account for individual performance obligations separately if they are distinct. The performance obligations for these contracts include access and use of our core solutions, implementation services, and customer support. Access and use of our core solutions and implementation services are considered distinct. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The transaction price is allocated to each performance obligation on a relative standalone selling price basis. Judgment is required to determine the standalone selling price for each distinct performance obligation. We typically have more than one standalone selling price for individual products and services due to the stratification of those products and services by customers and circumstances. In these instances, we determine the standalone selling price based on our overall pricing objectives, taking into consideration customer demographics and other factors. Fees are fixed based on rates specified in the subscription agreements, which do not provide for any refunds or adjustments. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Deferred Revenue&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We record deferred revenue when cash payments are received in advance of our performance. During the twelve months ended December&#160;31, 2020 and 2019, we recognized revenue of $4.5 million and $3.4 million, respectively, that were included in the deferred revenue balances at December&#160;31, 2019 and 2018, respectively. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Our payment terms vary by the type of our customer and the products or services offered. The time between invoicing and when payment is due is not significant. In instances where the timing of revenue recognition differs from the timing of invoicing, we have determined that our contracts do not include a significant financing component.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Practical Expedients&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In determining the transaction price, we have applied the practical expedient which allows us not to adjust the consideration for the effects of the time value of money as long as the time between when we transfer the promised service to a customer and when a customer pays is one year or less. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We do not disclose the value of unsatisfied performance obligations for contracts with an original expected term of one year or less.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We recognize revenue in proportion to the amount we have the right to invoice for certain core solutions and Value+ services revenue, as that amount corresponds directly with our performance completed to date. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 Costs &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Deferred costs, which primarily consist of sales commissions, are considered incremental and recoverable costs of obtaining a contract with a customer. These costs are deferred and then amortized on a straight-line basis over a period of benefit that we have determined to be three years. We typically do not pay commissions for contract renewals. We determined the period of benefit by taking into consideration our customer contract term, the useful life of our internal-use software, average customer life, and other factors. Amortization expense for the deferred costs is allocated based on the employee's department and included within&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;sales and marketing expense in the accompanying Consolidated Statements of Operations. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 includes the fees paid to these third-party service providers (including legal fees and costs associated with the delivery and provision of those services, as well as loss reserves and other costs associated with our legal liability to landlord insurance services), which vary both in cost and as a percent of revenue for each Value+ service offering, personnel-related costs (including salaries, performance-based compensation, benefits, and stock-based compensation) for our employees focused on customer service and the support of our operations, platform infrastructure costs (such as data center operations and hosting-related costs), payment processing fees and allocated shared costs. Cost of revenue excludes depreciation of property and equipment, and amortization of capitalized software development costs and intangible assets.&lt;/span&gt;&lt;/div&gt;</us-gaap:RevenueFromContractWithCustomerPolicyTextBlock>
    <appf:ContractTermSubscriptionAgreement
      contextRef="i615de3470d494946b4a5d94b44b0e6ec_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNjU5NzA2OTkxNDc4OA_20ba09ab-da45-4034-880c-312e6ab03bb0">P1M</appf:ContractTermSubscriptionAgreement>
    <appf:ContractTermSubscriptionAgreement
      contextRef="i770e64f46e564319a6c18b27195bb0d8_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNjU5NzA2OTkxNDc4OQ_6a5f03cf-319b-4e08-b2b4-f8eeaa8b2a1d">P1Y</appf:ContractTermSubscriptionAgreement>
    <us-gaap:ContractWithCustomerLiabilityRevenueRecognized
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMjEyNDg_9343c4f1-7b97-4961-9f43-48de4c409313"
      unitRef="usd">4500000</us-gaap:ContractWithCustomerLiabilityRevenueRecognized>
    <us-gaap:ContractWithCustomerLiabilityRevenueRecognized
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMjEyNTU_45f1cd2f-7f49-472e-8867-c0711d2dcf07"
      unitRef="usd">3400000</us-gaap:ContractWithCustomerLiabilityRevenueRecognized>
    <us-gaap:CapitalizedContractCostAmortizationPeriod
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNjU5NzA2OTkxODYzNg_9f626e5c-edea-4c18-b881-be2693690452">P3Y</us-gaap:CapitalizedContractCostAmortizationPeriod>
    <us-gaap:CapitalizedContractCostNet
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMjMzNDI_d53bf0ab-2d32-42c0-8a75-b442dbe6bb2d"
      unitRef="usd">10300000</us-gaap:CapitalizedContractCostNet>
    <us-gaap:CapitalizedContractCostNet
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMjMzNDk_722f0bec-de7b-43e1-9181-da04d0d73a92"
      unitRef="usd">9500000</us-gaap:CapitalizedContractCostNet>
    <us-gaap:CapitalizedContractCostNetCurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMjMzODk_f730f950-73b9-4a48-bd50-4203bcf8b8a0"
      unitRef="usd">5500000</us-gaap:CapitalizedContractCostNetCurrent>
    <us-gaap:CapitalizedContractCostNetCurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMjMzOTY_a63369fd-34c4-4ee0-ae8a-077c9770d85d"
      unitRef="usd">4800000</us-gaap:CapitalizedContractCostNetCurrent>
    <us-gaap:CapitalizedContractCostNetNoncurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMjM0NzY_80128b30-70cf-4147-a914-60a542e0b765"
      unitRef="usd">4800000</us-gaap:CapitalizedContractCostNetNoncurrent>
    <us-gaap:CapitalizedContractCostNetNoncurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMjM0ODM_c4944614-dd47-4d27-a5b3-edf328e41d5f"
      unitRef="usd">4600000</us-gaap:CapitalizedContractCostNetNoncurrent>
    <us-gaap:CapitalizedContractCostAmortization
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMjM2MjM_151249cb-14be-4f0c-b847-f9e6d115103e"
      unitRef="usd">5800000</us-gaap:CapitalizedContractCostAmortization>
    <us-gaap:CapitalizedContractCostAmortization
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMjM2MzA_55611227-e385-4891-810c-e7ea36f191a9"
      unitRef="usd">4200000</us-gaap:CapitalizedContractCostAmortization>
    <us-gaap:CapitalizedContractCostAmortization
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMTY0OTI2NzU3NDM2MA_4b363cdc-ba9d-42dc-989f-837e57e8fabe"
      unitRef="usd">2000000.0</us-gaap:CapitalizedContractCostAmortization>
    <us-gaap:SellingGeneralAndAdministrativeExpensesPolicyTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM1NTY_e333e0d2-783e-4ea2-be92-c5a7543a0aaa">Sales and Marketing Sales and marketing expense consists of personnel-related costs (including salaries, sales commissions, performance-based compensation, benefits, and stock-based compensation) for our employees focused on sales and marketing, costs associated with sales and marketing activities, and allocated shared and other costs. Marketing activities include advertising, online lead generation, lead nurturing, customer and industry events, and the creation of industry-related content and collateral. Sales commissions and other incremental costs to acquire customers and grow adoption and utilization of our Value+ services by our new and existing customers are deferred and then amortized on a straight-line basis over a period of benefit, which we have determined to be three years. We focus our sales and marketing efforts on generating awareness of our software solutions, creating sales leads, establishing and promoting our brands, and cultivating an educated community of successful and vocal customers. &lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;General and Administrative &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;General and administrative expense consists of personnel-related costs (including salaries, a majority of total performance-based compensation, benefits, and stock-based compensation) for employees in our executive, finance, information technology, human resources, legal, compliance, corporate development and administrative organizations. In addition, general and administrative expense includes fees for third-party professional services (including audit, legal, compliance, tax, and consulting services), transaction costs related to business combinations and divestitures, regulatory fines and penalties, other corporate expenses, and allocated shared costs.&lt;/span&gt;&lt;/div&gt;</us-gaap:SellingGeneralAndAdministrativeExpensesPolicyTextBlock>
    <us-gaap:AdvertisingExpense
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMjU4MDc_d29a94c0-a6f1-452d-b1aa-36350ef7584b"
      unitRef="usd">7000000.0</us-gaap:AdvertisingExpense>
    <us-gaap:AdvertisingExpense
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMjU4MTE_eb5cb96b-f333-4678-8951-223d49610ccb"
      unitRef="usd">5800000</us-gaap:AdvertisingExpense>
    <us-gaap:AdvertisingExpense
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMjU4MTg_3109e9db-0816-42ce-a7eb-84791817e070"
      unitRef="usd">4500000</us-gaap:AdvertisingExpense>
    <us-gaap:ResearchAndDevelopmentExpensePolicy
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM0OTY_520cdf33-b239-4e40-be3b-32dc38cda872">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Research and Product Development &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Research and product development expense consists of personnel-related costs (including salaries, performance-based compensation, benefits, and stock-based compensation) for our employees focused on research and product development, fees for third-party development resources, and allocated shared and other costs. Our research and product development efforts are focused on enhancing functionality and the ease of use of our existing software solutions by adding new core functionality, Value+ services and other improvements, as well as developing new products and services for new and existing markets. We capitalize our software development costs which meet the criteria for capitalization. Amortization of capitalized software development costs is included in depreciation and amortization expense.&lt;/span&gt;&lt;/div&gt;</us-gaap:ResearchAndDevelopmentExpensePolicy>
    <us-gaap:DepreciationDepletionAndAmortizationPolicyTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM1MDM_af8b0e3c-4121-4381-9c5e-7165c46d579a">Depreciation and Amortization Depreciation and amortization expense includes depreciation of property and equipment, amortization of capitalized software development costs, and amortization of intangible assets. We depreciate or amortize property and equipment, software development costs, and intangible assets over their expected useful lives on a straight-line basis, which approximates the pattern in which the economic benefits of the assets are consumed.</us-gaap:DepreciationDepletionAndAmortizationPolicyTextBlock>
    <us-gaap:CompensationRelatedCostsPolicyTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM1MzY_85d352f5-1247-4547-969f-7fd3afffefe5">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We recognize stock-based compensation expense for stock-based awards granted to employees and directors that can be settled in shares of our common stock. We estimate the fair value of stock options and performance-based stock options ("PSOs"), using the Black-Scholes option-pricing model. We estimate the fair value of restricted stock awards ("RSAs"), restricted stock units ("RSUs") and performance-based RSUs or performance share units ("PSUs") based on the fair value of our common stock on the date of grant.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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, 2020, 2019, and 2018 we did not grant time-based stock options or PSOs. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Restricted Stock Units&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;RSUs generally vest in equal tranches over &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMjk4OTM_373b3e65-6783-4f52-baa6-3662f8cea7f0"&gt;four&lt;/span&gt; annual periods and are expensed on a straight-line basis over the vesting period. The shares underlying the RSU grants are not issued and outstanding until the applicable vesting date. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Performance-Based Equity Awards &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Our PSUs include performance conditions that require us to estimate the probable outcome of the performance condition. This assessment is based on management's judgment using internally developed forecasts and assessed at each reporting period. Compensation cost is recorded if it is probable that the performance condition will be achieved. Adjustments to compensation expense are made each period based on changes in our estimate of the number of PSUs that are probable of vesting. PSUs will vest upon achievement of the relevant performance metric once such calculation is reviewed and approved by our Board of Directors. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Forfeiture Rate&lt;/span&gt;&lt;/div&gt;We estimate a forfeiture rate to calculate our stock-based compensation expense for our stock-based awards. The forfeiture rate is based on an analysis of actual forfeitures. We will continue to evaluate the appropriateness of the forfeiture rate based on actual forfeiture experience, analysis of employee turnover, and other factors. Changes in the estimated forfeiture rate can have a significant impact on our stock-based compensation expense as the cumulative effect of adjusting the rate is recognized in the period the estimated forfeiture rate is changed. If a revised forfeiture rate is higher than the previously-estimated forfeiture rate, an adjustment is made that will result in a decrease to our stock-based compensation expense recognized in our Consolidated Financial Statements. If a revised forfeiture rate is lower than the previously-estimated forfeiture rate, an adjustment is made that will result in an increase to our stock-based compensation expense recognized in our Consolidated Financial Statements.</us-gaap:CompensationRelatedCostsPolicyTextBlock>
    <us-gaap:IncomeTaxPolicyTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM1NDc_440e533c-09f6-43d0-a146-868358d218f0">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We recognize deferred tax liabilities and assets for the expected future tax consequences of temporary differences between the carrying amounts and the tax bases of assets and liabilities. Deferred income tax assets and liabilities are measured using enacted tax rates expected to apply to taxable income in the years in which those temporary differences are expected to be recovered or settled. The effect of a change in tax rates on deferred tax assets and liabilities is recognized in the Consolidated Statements of Operations in the period that includes the enactment date. A valuation allowance is recorded when it is more likely than not that some of the deferred tax assets will not be realized. In evaluating the need for a valuation allowance, management considers the weighting of all available positive and negative evidence, which includes, among other things, the nature, frequency and severity of current and cumulative taxable income or losses, future projections of profitability, and the duration of statutory carryforward periods.&lt;/span&gt;&lt;/div&gt;Judgment is required to measure the amount of tax benefits that can be recognized associated with uncertain tax positions. We recognize the tax benefit from an uncertain tax position only if it is more likely than not that the tax position will be sustained on examination by the taxing authorities, based on the technical merits of the position. The tax benefits recognized in our Consolidated Financial Statements from such positions are then measured based on the largest benefit that has a greater than 50% likelihood of being realized. We recognize interest and penalties accrued with respect to uncertain tax positions, if any, in our provision for income taxes in the Consolidated Statements of Operations.</us-gaap:IncomeTaxPolicyTextBlock>
    <us-gaap:EarningsPerSharePolicyTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM1MTA_d617a603-626f-4fbf-a4f3-cb9d456d672d">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Net Income per Share&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Basic net income per share includes no dilution and is computed by dividing net income for the period by the weighted average number of common shares outstanding during the period. Diluted net income per share is computed by dividing net income for the period by the weighted average number of shares of common stock and potentially dilutive common stock outstanding during the period. The dilutive effect of outstanding options and equity incentive awards is reflected in diluted net income per share by application of the treasury stock method. The calculation of diluted net income per share excludes all anti-dilutive common shares.&lt;/span&gt;&lt;/div&gt;The net income per common share was the same for our Class A and Class B common shares because they are entitled to the same liquidation and dividend rights and are therefore combined in the table below.</us-gaap:EarningsPerSharePolicyTextBlock>
    <us-gaap:ScheduleOfWeightedAverageNumberOfSharesTableTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNDM1Njg_eeeadfe7-5132-49fe-b593-6679c686791c">The following table presents a reconciliation of our weighted average number of Class A and Class B common shares used to compute net income per share (in thousands):&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:69.281%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.284%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.284%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.285%"/&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="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;Year 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:8pt;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;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;2019&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;2018&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Weighted average common shares outstanding&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;34,269&#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="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:10pt;font-weight:400;line-height:100%"&gt;34,020&#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="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:10pt;font-weight:400;line-height:100%"&gt;34,139&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Less: Weighted average unvested restricted shares subject to repurchase&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:10pt;font-weight:400;line-height:100%"&gt;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:10pt;font-weight:400;line-height:100%"&gt;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:10pt;font-weight:400;line-height:100%"&gt;11&#160;&lt;/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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Weighted average common shares outstanding; basic&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;34,264&#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="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:10pt;font-weight:400;line-height:100%"&gt;34,016&#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="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:10pt;font-weight:400;line-height:100%"&gt;34,128&#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 style="height:15pt"&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;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;border-top:3pt double #000000;padding:0 1pt"/&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:10pt;font-weight:400;line-height:100%"&gt;Weighted average common shares outstanding; basic&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:10pt;font-weight:400;line-height:100%"&gt;34,264&#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:10pt;font-weight:400;line-height:100%"&gt;34,016&#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:10pt;font-weight:400;line-height:100%"&gt;34,128&#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:10pt;font-weight:400;line-height:100%"&gt;Plus:  Weighted average options, restricted stock units and restricted shares used to compute diluted net income per common share&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:10pt;font-weight:400;line-height:100%"&gt;1,449&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;1,551&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;1,434&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Weighted average common shares outstanding; diluted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;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:10pt;font-weight:400;line-height:100%"&gt;35,713&#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 colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;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:10pt;font-weight:400;line-height:100%"&gt;35,567&#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 colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;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:10pt;font-weight:400;line-height:100%"&gt;35,562&#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:ScheduleOfWeightedAverageNumberOfSharesTableTextBlock>
    <us-gaap:WeightedAverageNumberOfSharesIssuedBasic
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjMxODAwZjZmNDE0YTRlZjVhZDMyNjk1NTg5N2Y1NGY3L3RhYmxlcmFuZ2U6MzE4MDBmNmY0MTRhNGVmNWFkMzI2OTU1ODk3ZjU0ZjdfMi0xLTEtMS0w_e2b2ba02-581e-4267-8759-9a59216f0e3b"
      unitRef="shares">34269000</us-gaap:WeightedAverageNumberOfSharesIssuedBasic>
    <us-gaap:WeightedAverageNumberOfSharesIssuedBasic
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjMxODAwZjZmNDE0YTRlZjVhZDMyNjk1NTg5N2Y1NGY3L3RhYmxlcmFuZ2U6MzE4MDBmNmY0MTRhNGVmNWFkMzI2OTU1ODk3ZjU0ZjdfMi0zLTEtMS0w_26a409da-86c9-4415-8114-f0eea91fbde2"
      unitRef="shares">34020000</us-gaap:WeightedAverageNumberOfSharesIssuedBasic>
    <us-gaap:WeightedAverageNumberOfSharesIssuedBasic
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjMxODAwZjZmNDE0YTRlZjVhZDMyNjk1NTg5N2Y1NGY3L3RhYmxlcmFuZ2U6MzE4MDBmNmY0MTRhNGVmNWFkMzI2OTU1ODk3ZjU0ZjdfMi01LTEtMS0w_ba10db04-2639-444d-b1c1-f4769ef9a9c3"
      unitRef="shares">34139000</us-gaap:WeightedAverageNumberOfSharesIssuedBasic>
    <us-gaap:WeightedAverageNumberOfSharesRestrictedStock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjMxODAwZjZmNDE0YTRlZjVhZDMyNjk1NTg5N2Y1NGY3L3RhYmxlcmFuZ2U6MzE4MDBmNmY0MTRhNGVmNWFkMzI2OTU1ODk3ZjU0ZjdfMy0xLTEtMS0w_71c64060-3022-49cf-8fda-7afbe2309f18"
      unitRef="shares">5000</us-gaap:WeightedAverageNumberOfSharesRestrictedStock>
    <us-gaap:WeightedAverageNumberOfSharesRestrictedStock
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjMxODAwZjZmNDE0YTRlZjVhZDMyNjk1NTg5N2Y1NGY3L3RhYmxlcmFuZ2U6MzE4MDBmNmY0MTRhNGVmNWFkMzI2OTU1ODk3ZjU0ZjdfMy0zLTEtMS0w_be58a5f6-dd27-47ba-82ff-979ee434c3af"
      unitRef="shares">4000</us-gaap:WeightedAverageNumberOfSharesRestrictedStock>
    <us-gaap:WeightedAverageNumberOfSharesRestrictedStock
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjMxODAwZjZmNDE0YTRlZjVhZDMyNjk1NTg5N2Y1NGY3L3RhYmxlcmFuZ2U6MzE4MDBmNmY0MTRhNGVmNWFkMzI2OTU1ODk3ZjU0ZjdfMy01LTEtMS0w_0db3264d-9288-4db5-afc6-053d4bd8c724"
      unitRef="shares">11000</us-gaap:WeightedAverageNumberOfSharesRestrictedStock>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjMxODAwZjZmNDE0YTRlZjVhZDMyNjk1NTg5N2Y1NGY3L3RhYmxlcmFuZ2U6MzE4MDBmNmY0MTRhNGVmNWFkMzI2OTU1ODk3ZjU0ZjdfNC0xLTEtMS0w_a8ffae71-91c8-4023-92ba-d89403f2a8d3"
      unitRef="shares">34264000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjMxODAwZjZmNDE0YTRlZjVhZDMyNjk1NTg5N2Y1NGY3L3RhYmxlcmFuZ2U6MzE4MDBmNmY0MTRhNGVmNWFkMzI2OTU1ODk3ZjU0ZjdfNC0zLTEtMS0w_ebc27477-8c85-4ded-a75e-758e3d2b721f"
      unitRef="shares">34016000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjMxODAwZjZmNDE0YTRlZjVhZDMyNjk1NTg5N2Y1NGY3L3RhYmxlcmFuZ2U6MzE4MDBmNmY0MTRhNGVmNWFkMzI2OTU1ODk3ZjU0ZjdfNC01LTEtMS0w_2d0ed218-c911-474f-8f4e-8c2f89768ef7"
      unitRef="shares">34128000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjMxODAwZjZmNDE0YTRlZjVhZDMyNjk1NTg5N2Y1NGY3L3RhYmxlcmFuZ2U6MzE4MDBmNmY0MTRhNGVmNWFkMzI2OTU1ODk3ZjU0ZjdfNi0xLTEtMS0w_2f61b05a-5f5a-4075-be52-58506995f317"
      unitRef="shares">34264000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjMxODAwZjZmNDE0YTRlZjVhZDMyNjk1NTg5N2Y1NGY3L3RhYmxlcmFuZ2U6MzE4MDBmNmY0MTRhNGVmNWFkMzI2OTU1ODk3ZjU0ZjdfNi0zLTEtMS0w_611da5bb-610f-4b9c-9708-976e76ea59af"
      unitRef="shares">34016000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjMxODAwZjZmNDE0YTRlZjVhZDMyNjk1NTg5N2Y1NGY3L3RhYmxlcmFuZ2U6MzE4MDBmNmY0MTRhNGVmNWFkMzI2OTU1ODk3ZjU0ZjdfNi01LTEtMS0w_93033314-a4be-428c-8ae5-4cfc5f191054"
      unitRef="shares">34128000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjMxODAwZjZmNDE0YTRlZjVhZDMyNjk1NTg5N2Y1NGY3L3RhYmxlcmFuZ2U6MzE4MDBmNmY0MTRhNGVmNWFkMzI2OTU1ODk3ZjU0ZjdfNy0xLTEtMS0w_e1900b46-c0e9-4532-a1c9-de9b22e7f82c"
      unitRef="shares">1449000</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjMxODAwZjZmNDE0YTRlZjVhZDMyNjk1NTg5N2Y1NGY3L3RhYmxlcmFuZ2U6MzE4MDBmNmY0MTRhNGVmNWFkMzI2OTU1ODk3ZjU0ZjdfNy0zLTEtMS0w_76a4504d-4dd9-4d57-97b8-852f207d2b71"
      unitRef="shares">1551000</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjMxODAwZjZmNDE0YTRlZjVhZDMyNjk1NTg5N2Y1NGY3L3RhYmxlcmFuZ2U6MzE4MDBmNmY0MTRhNGVmNWFkMzI2OTU1ODk3ZjU0ZjdfNy01LTEtMS0w_2ee74b9d-8aec-4e61-8625-64a3e031fb7b"
      unitRef="shares">1434000</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjMxODAwZjZmNDE0YTRlZjVhZDMyNjk1NTg5N2Y1NGY3L3RhYmxlcmFuZ2U6MzE4MDBmNmY0MTRhNGVmNWFkMzI2OTU1ODk3ZjU0ZjdfOC0xLTEtMS0w_340da975-314b-4e31-ac27-a1479a04afe7"
      unitRef="shares">35713000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjMxODAwZjZmNDE0YTRlZjVhZDMyNjk1NTg5N2Y1NGY3L3RhYmxlcmFuZ2U6MzE4MDBmNmY0MTRhNGVmNWFkMzI2OTU1ODk3ZjU0ZjdfOC0zLTEtMS0w_2dea9132-25c7-4107-8fe1-baa83a73bc5c"
      unitRef="shares">35567000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjMxODAwZjZmNDE0YTRlZjVhZDMyNjk1NTg5N2Y1NGY3L3RhYmxlcmFuZ2U6MzE4MDBmNmY0MTRhNGVmNWFkMzI2OTU1ODk3ZjU0ZjdfOC01LTEtMS0w_9401ff53-2580-407b-98b5-c4b4494ee753"
      unitRef="shares">35562000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i0d3eeb8943cc4fc3a192ffa175deb491_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMzQ1MjQ_740657a3-3b5f-4ba6-81a0-ad70debc463b"
      unitRef="shares">79000</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i84676c5ab81f419796cc34238a67fe65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMzQ1Mjg_5593ef2a-43cd-4617-bee8-240d73dc3c04"
      unitRef="shares">187000</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i5bd52c1973244553a751a761f389ca66_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfMzQ1MzU_c4b4e212-68ec-4a43-abbf-20ca160f418d"
      unitRef="shares">358000</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNzE0NjgyNTcyNzg3MA_6e9b3296-7f77-4472-8170-da0437559b8a">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 Adopted in 2018&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In May 2014, the Financial Accounting Standards Board ("FASB") issued the New Revenue Standard, which requires an entity to recognize the amount of revenue to which it expects to be entitled for the transfer of promised goods or services to customers. The New Revenue Standard also includes Subtopic 340-40, &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;Other Assets and Deferred Costs - Contracts with Customers&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;, which discusses the deferral of incremental costs of obtaining a contract with a customer.  &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We adopted the New Revenue Standard at January 1, 2018 using the modified retrospective transition method applied to those contracts which were not completed at that date. We recognized the cumulative effect of initially applying the New Revenue Standard as an adjustment to the opening balance of retained earnings. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The adoption of the New Revenue Standard did not have an impact on our revenues. It did, however, have a significant impact related to the deferral of incremental costs of obtaining contracts. Prior to the adoption of the New Revenue Standard, our commissions were expensed as incurred. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The cumulative effects of the changes made to our Consolidated Balance Sheet at January 1, 2018 for the adoption of the New Revenue Standard were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:11pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:54.894%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.788%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.969%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.788%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.969%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.792%"/&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: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;December 31, 2017&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;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;Balance at&lt;br/&gt;January 1, 2018&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:10pt;font-weight:700;line-height:100%"&gt;Assets&lt;/span&gt;&lt;/td&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;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;Prepaid expenses and other current assets&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,546&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;1,148&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;5,694&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Other assets&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:10pt;font-weight:400;line-height:100%"&gt;1,238&#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:10pt;font-weight:400;line-height:100%"&gt;1,816&#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:10pt;font-weight:400;line-height:100%"&gt;3,054&#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 style="height:15pt"&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;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Equity&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;/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:10pt;font-weight:400;line-height:100%"&gt;Accumulated deficit&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(67,247)&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;2,964&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(64,283)&lt;/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-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 Adopted in 2019&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 2016, the FASB issued ASU No. 2016-02, &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;Leases&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; ("ASU 2016-02"), which requires an entity to recognize ROU assets and lease liabilities on its balance sheet and disclose key information about leasing arrangements. ASU 2016-02 offers specific accounting guidance for a lessee, a lessor and sale and leaseback transactions. Lessees and lessors are required to disclose qualitative and quantitative information about leasing arrangements to enable a user of the financial statements to assess the amount, timing and uncertainty of cash flows arising from leases. In July&#160;2018, the FASB issued ASU No. 2018-11, Leases (Topic 842): Targeted Improvements ("ASU 2018-11"). Among other things, ASU 2018-11 provides administrative relief by allowing entities to implement the lease standard on a modified retrospective basis (the "Optional Transition Method"). Effectively, the Optional Transition Method permits us to adopt the lease standard through a cumulative effect adjustment to our opening balance sheet as of January 1, 2019, and report under the new lease standard on a post-adoption basis. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We adopted ASU 2016-02 effective January 1, 2019, using the Optional Transition Method. We elected the package of practical expedients permitted under the transition guidance, which allows us to carry forward our historical lease classification, our assessment of whether a contract is or contains a lease, and our initial direct costs for any leases that existed prior to adoption of the new lease standard. The comparative information has not been recast and continues to be reported under the accounting standards in effect for those periods. We updated our accounting policies, processes, internal controls and information systems that were required to meet the new lease standard's reporting and disclosure requirements.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The adoption of ASU 2016-02 had a material impact on our Consolidated Balance Sheets, but did not have an impact on our Consolidated Statements of Operations or our Consolidated Statements of Cash Flows. The most significant impact was the recognition of ROU assets and lease liabilities for operating leases.&#160;We also reclassified prepaid and deferred rent to the ROU asset balance as of January 1, 2019.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The cumulative effect of the changes made to our Consolidated Balance Sheet at January 1, 2019 for the adoption of the new lease standard was as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:11pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:54.958%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.768%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.967%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.768%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.967%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.772%"/&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: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;December 31, 2018&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;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;Balance at&lt;br/&gt;January 1, 2019&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:10pt;font-weight:700;line-height:100%"&gt;Assets&lt;/span&gt;&lt;/td&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;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;Prepaid expenses and other current assets&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;11,775&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(317)&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;11,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:10pt;font-weight:400;line-height:100%"&gt;Operating lease right-of-use assets&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;16,945&#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:10pt;font-weight:400;line-height:100%"&gt;16,945&#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 style="height:15pt"&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;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Liabilities and Stockholders&#x2019; Equity &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;/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:10pt;font-weight:400;line-height:100%"&gt;Other current liabilities&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;1,447&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;3,493&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,940&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Operating lease liabilities&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;20,056&#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:10pt;font-weight:400;line-height:100%"&gt;20,056&#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:10pt;font-weight:400;line-height:100%"&gt;Other long-term liabilities&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:10pt;font-weight:400;line-height:100%"&gt;7,080&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(6,921)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;159&#160;&lt;/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-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 Adopted in 2020&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In June 2016, the FASB issued Accounting Standards Update ("ASU") No. 2016-13,&#160;&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;Financial Instruments - Credit Losses (Topic 326): Measurement of Credit Losses on Financial Instruments &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;("ASU 2016-13"), which amends the current accounting guidance and requires the measurement of all expected losses based on historical experience, current conditions and reasonable and supportable forecasts. This guidance amends the accounting for credit losses for available-for-sale investment securities and purchased financial assets with credit deterioration. We adopted ASU 2016-13 on January 1, 2020. The adoption of this guidance did not have a material impact on our financial condition, results of operations, cash flows or disclosures. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 2018, the FASB issued ASU No. 2018-15,&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;&#160;Intangibles&#x2014;Goodwill and Other&#x2014;Internal-Use Software (Subtopic 350-40): Customer&#x2019;s Accounting for Implementation Costs Incurred in a Cloud Computing Arrangement That Is a Service Contract &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;("ASU 2018-15"), a series of amendments which align the requirements for capitalizing implementation costs incurred in a hosting arrangement that is a service contract with the requirements for capitalizing implementation costs incurred to develop or obtain internal-use software (and hosting arrangements that include an internal use software license). The accounting for the service element of a hosting arrangement that is a service contract is not affected by these amendments. We adopted ASU 2018-15 on January 1, 2020. The adoption of this guidance did not have a material impact on our financial condition, results of operations, cash flows or disclosures. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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="text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;In December 2019, the FASB issued ASU No. 2019-12,&#160;&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:115%"&gt;Income Taxes (Topic 740): Simplifying the Accounting for Income Taxes&#160;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;("ASU 2019-12").&#160;This amendment was issued to simplify the accounting for income taxes by removing certain exceptions for recognizing deferred taxes, performing intraperiod allocation, and calculating income taxes in interim periods. Further, ASU 2019-12 adds guidance to reduce complexity in certain areas, including recognizing deferred taxes for tax basis goodwill and allocating taxes to members of a consolidated group. This guidance also requires an entity to reflect the effect of an enacted change in tax laws or rates in its effective income tax rate in the first interim period that includes the enactment date of the new legislation, aligning the timing of recognition of the effects from enacted tax law changes on the effective income tax rate with the effects on deferred income tax assets and liabilities. Under existing guidance, an entity recognizes the effects of the enacted tax law change on the effective income tax rate in the period that includes the effective date of the tax law. This guidance is effective for interim and annual periods beginning after December 15, 2020 with early adoption permitted. We do not expect the adoption of this guidance to have a material impact on our financial condition, results of operations, cash flows or disclosures.&lt;/span&gt;&lt;/div&gt;</us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock>
    <us-gaap:ScheduleOfNewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RleHRyZWdpb246OGVhMWU0NDYwMmM4NGVkZDgwY2QxMTkyZWRhNDExN2FfNzE0NjgyNTczMjU0NQ_51f27b3a-a3f8-453e-a41e-1e2e656e4edc">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The cumulative effects of the changes made to our Consolidated Balance Sheet at January 1, 2018 for the adoption of the New Revenue Standard were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:11pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:54.894%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.788%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.969%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.788%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.969%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.792%"/&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: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;December 31, 2017&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;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;Balance at&lt;br/&gt;January 1, 2018&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:10pt;font-weight:700;line-height:100%"&gt;Assets&lt;/span&gt;&lt;/td&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;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;Prepaid expenses and other current assets&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,546&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;1,148&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;5,694&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Other assets&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:10pt;font-weight:400;line-height:100%"&gt;1,238&#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:10pt;font-weight:400;line-height:100%"&gt;1,816&#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:10pt;font-weight:400;line-height:100%"&gt;3,054&#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 style="height:15pt"&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;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Equity&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;/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:10pt;font-weight:400;line-height:100%"&gt;Accumulated deficit&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(67,247)&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;2,964&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(64,283)&lt;/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-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The cumulative effect of the changes made to our Consolidated Balance Sheet at January 1, 2019 for the adoption of the new lease standard was as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:11pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:54.958%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.768%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.967%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.768%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.967%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.772%"/&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: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;December 31, 2018&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;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;Balance at&lt;br/&gt;January 1, 2019&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:10pt;font-weight:700;line-height:100%"&gt;Assets&lt;/span&gt;&lt;/td&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;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;Prepaid expenses and other current assets&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;11,775&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(317)&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;11,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:10pt;font-weight:400;line-height:100%"&gt;Operating lease right-of-use assets&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;16,945&#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:10pt;font-weight:400;line-height:100%"&gt;16,945&#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 style="height:15pt"&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;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Liabilities and Stockholders&#x2019; Equity &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;/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:10pt;font-weight:400;line-height:100%"&gt;Other current liabilities&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;1,447&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;3,493&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,940&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Operating lease liabilities&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;20,056&#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:10pt;font-weight:400;line-height:100%"&gt;20,056&#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:10pt;font-weight:400;line-height:100%"&gt;Other long-term liabilities&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:10pt;font-weight:400;line-height:100%"&gt;7,080&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(6,921)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;159&#160;&lt;/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:ScheduleOfNewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i05f36af467dd4c4b8764033a297871cb_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjRmNzg0ZDk3NjUxODQwNTdhNWQzMjU4YzI5ODAzNjE0L3RhYmxlcmFuZ2U6NGY3ODRkOTc2NTE4NDA1N2E1ZDMyNThjMjk4MDM2MTRfMi0xLTEtMS03NjU3_d678b62e-c662-44f8-848d-310da10a87f7"
      unitRef="usd">4546000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i1622f2335b2d43d2b9f0f3fabf8c307e_I20180101"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjRmNzg0ZDk3NjUxODQwNTdhNWQzMjU4YzI5ODAzNjE0L3RhYmxlcmFuZ2U6NGY3ODRkOTc2NTE4NDA1N2E1ZDMyNThjMjk4MDM2MTRfMi0zLTEtMS03NjU3_0367efbb-7378-428d-8f74-bdb5c3f9d8d6"
      unitRef="usd">1148000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="if18cdb85957749b29afe5d94e2aa5014_I20180101"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjRmNzg0ZDk3NjUxODQwNTdhNWQzMjU4YzI5ODAzNjE0L3RhYmxlcmFuZ2U6NGY3ODRkOTc2NTE4NDA1N2E1ZDMyNThjMjk4MDM2MTRfMi01LTEtMS03NjU3_1067bbbe-a84f-4c99-967a-f9e96093f345"
      unitRef="usd">5694000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i05f36af467dd4c4b8764033a297871cb_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjRmNzg0ZDk3NjUxODQwNTdhNWQzMjU4YzI5ODAzNjE0L3RhYmxlcmFuZ2U6NGY3ODRkOTc2NTE4NDA1N2E1ZDMyNThjMjk4MDM2MTRfMy0xLTEtMS03NjU3_87e6bc0e-0a4a-453d-832b-0738f737ea99"
      unitRef="usd">1238000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i1622f2335b2d43d2b9f0f3fabf8c307e_I20180101"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjRmNzg0ZDk3NjUxODQwNTdhNWQzMjU4YzI5ODAzNjE0L3RhYmxlcmFuZ2U6NGY3ODRkOTc2NTE4NDA1N2E1ZDMyNThjMjk4MDM2MTRfMy0zLTEtMS03NjU3_6968f5f7-9419-4648-878e-15dc3384f646"
      unitRef="usd">1816000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="if18cdb85957749b29afe5d94e2aa5014_I20180101"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjRmNzg0ZDk3NjUxODQwNTdhNWQzMjU4YzI5ODAzNjE0L3RhYmxlcmFuZ2U6NGY3ODRkOTc2NTE4NDA1N2E1ZDMyNThjMjk4MDM2MTRfMy01LTEtMS03NjU3_6114d911-7208-46d7-b2ad-cd23e20989b7"
      unitRef="usd">3054000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i05f36af467dd4c4b8764033a297871cb_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjRmNzg0ZDk3NjUxODQwNTdhNWQzMjU4YzI5ODAzNjE0L3RhYmxlcmFuZ2U6NGY3ODRkOTc2NTE4NDA1N2E1ZDMyNThjMjk4MDM2MTRfNi0xLTEtMS03NjU3_52709107-4ac7-4d2e-a74f-ea30956c8b06"
      unitRef="usd">-67247000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i1622f2335b2d43d2b9f0f3fabf8c307e_I20180101"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjRmNzg0ZDk3NjUxODQwNTdhNWQzMjU4YzI5ODAzNjE0L3RhYmxlcmFuZ2U6NGY3ODRkOTc2NTE4NDA1N2E1ZDMyNThjMjk4MDM2MTRfNi0zLTEtMS03NjU3_a43fd715-68af-4d6b-a190-0ce835022816"
      unitRef="usd">2964000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="if18cdb85957749b29afe5d94e2aa5014_I20180101"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjRmNzg0ZDk3NjUxODQwNTdhNWQzMjU4YzI5ODAzNjE0L3RhYmxlcmFuZ2U6NGY3ODRkOTc2NTE4NDA1N2E1ZDMyNThjMjk4MDM2MTRfNi01LTEtMS03NjU3_35e49ae7-c84a-4419-93f5-b254cbd8de9e"
      unitRef="usd">-64283000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i02d63145a04b47a48a5a20bb6671ce00_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjc5NTk1MWU4MGU3MzRlNTdhOGU0NTE3ZGE0Yjk3NmYwL3RhYmxlcmFuZ2U6Nzk1OTUxZTgwZTczNGU1N2E4ZTQ1MTdkYTRiOTc2ZjBfMi0xLTEtMS05MTIz_46a693fc-2465-4f7f-8d32-06d4fbd71f1a"
      unitRef="usd">11775000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i99864d0f89d24a0cbafa25d8e194e0fd_I20190101"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjc5NTk1MWU4MGU3MzRlNTdhOGU0NTE3ZGE0Yjk3NmYwL3RhYmxlcmFuZ2U6Nzk1OTUxZTgwZTczNGU1N2E4ZTQ1MTdkYTRiOTc2ZjBfMi0zLTEtMS05MTI1_f9183bee-d261-4a41-835f-42672d2dd012"
      unitRef="usd">-317000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="if48a6e4c69274938817f9b2089caf91b_I20190101"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjc5NTk1MWU4MGU3MzRlNTdhOGU0NTE3ZGE0Yjk3NmYwL3RhYmxlcmFuZ2U6Nzk1OTUxZTgwZTczNGU1N2E4ZTQ1MTdkYTRiOTc2ZjBfMi01LTEtMS05MTI3_5561cd7a-7bbb-4663-b6c9-3776381ca2ca"
      unitRef="usd">11458000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i02d63145a04b47a48a5a20bb6671ce00_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjc5NTk1MWU4MGU3MzRlNTdhOGU0NTE3ZGE0Yjk3NmYwL3RhYmxlcmFuZ2U6Nzk1OTUxZTgwZTczNGU1N2E4ZTQ1MTdkYTRiOTc2ZjBfMy0xLTEtMS05MTIz_a38b75ff-bff7-42a0-a0c7-60c5a84aa6ea"
      unitRef="usd">0</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i99864d0f89d24a0cbafa25d8e194e0fd_I20190101"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjc5NTk1MWU4MGU3MzRlNTdhOGU0NTE3ZGE0Yjk3NmYwL3RhYmxlcmFuZ2U6Nzk1OTUxZTgwZTczNGU1N2E4ZTQ1MTdkYTRiOTc2ZjBfMy0zLTEtMS05MTI1_622c85c3-8c77-4d4e-8fc8-68b1cc5390ac"
      unitRef="usd">16945000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="if48a6e4c69274938817f9b2089caf91b_I20190101"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjc5NTk1MWU4MGU3MzRlNTdhOGU0NTE3ZGE0Yjk3NmYwL3RhYmxlcmFuZ2U6Nzk1OTUxZTgwZTczNGU1N2E4ZTQ1MTdkYTRiOTc2ZjBfMy01LTEtMS05MTI3_37fece85-60c5-475b-a5cb-4dbc1a455ad4"
      unitRef="usd">16945000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OtherLiabilitiesCurrent
      contextRef="i02d63145a04b47a48a5a20bb6671ce00_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjc5NTk1MWU4MGU3MzRlNTdhOGU0NTE3ZGE0Yjk3NmYwL3RhYmxlcmFuZ2U6Nzk1OTUxZTgwZTczNGU1N2E4ZTQ1MTdkYTRiOTc2ZjBfNi0xLTEtMS05MTI5_3f8e0efc-9fc4-43af-a47a-ccf4f88fbb50"
      unitRef="usd">1447000</us-gaap:OtherLiabilitiesCurrent>
    <us-gaap:OtherLiabilitiesCurrent
      contextRef="i99864d0f89d24a0cbafa25d8e194e0fd_I20190101"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjc5NTk1MWU4MGU3MzRlNTdhOGU0NTE3ZGE0Yjk3NmYwL3RhYmxlcmFuZ2U6Nzk1OTUxZTgwZTczNGU1N2E4ZTQ1MTdkYTRiOTc2ZjBfNi0zLTEtMS05MTMx_6d1fe97a-e5c1-4a72-aef3-e2378ec63b5c"
      unitRef="usd">3493000</us-gaap:OtherLiabilitiesCurrent>
    <us-gaap:OtherLiabilitiesCurrent
      contextRef="if48a6e4c69274938817f9b2089caf91b_I20190101"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjc5NTk1MWU4MGU3MzRlNTdhOGU0NTE3ZGE0Yjk3NmYwL3RhYmxlcmFuZ2U6Nzk1OTUxZTgwZTczNGU1N2E4ZTQ1MTdkYTRiOTc2ZjBfNi01LTEtMS05MTMz_e32df864-b1dd-49f7-b16f-72c2ddae23d9"
      unitRef="usd">4940000</us-gaap:OtherLiabilitiesCurrent>
    <us-gaap:OperatingLeaseLiability
      contextRef="i02d63145a04b47a48a5a20bb6671ce00_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjc5NTk1MWU4MGU3MzRlNTdhOGU0NTE3ZGE0Yjk3NmYwL3RhYmxlcmFuZ2U6Nzk1OTUxZTgwZTczNGU1N2E4ZTQ1MTdkYTRiOTc2ZjBfNy0xLTEtMS05MTI5_c417967e-908b-49d8-b2ca-f711fa366a39"
      unitRef="usd">0</us-gaap:OperatingLeaseLiability>
    <us-gaap:OperatingLeaseLiability
      contextRef="i99864d0f89d24a0cbafa25d8e194e0fd_I20190101"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjc5NTk1MWU4MGU3MzRlNTdhOGU0NTE3ZGE0Yjk3NmYwL3RhYmxlcmFuZ2U6Nzk1OTUxZTgwZTczNGU1N2E4ZTQ1MTdkYTRiOTc2ZjBfNy0zLTEtMS05MTMx_add1779f-401c-47a0-81cc-1ca085050e8b"
      unitRef="usd">20056000</us-gaap:OperatingLeaseLiability>
    <us-gaap:OperatingLeaseLiability
      contextRef="if48a6e4c69274938817f9b2089caf91b_I20190101"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjc5NTk1MWU4MGU3MzRlNTdhOGU0NTE3ZGE0Yjk3NmYwL3RhYmxlcmFuZ2U6Nzk1OTUxZTgwZTczNGU1N2E4ZTQ1MTdkYTRiOTc2ZjBfNy01LTEtMS05MTMz_a2761ade-afaf-4820-8510-71c2e148a402"
      unitRef="usd">20056000</us-gaap:OperatingLeaseLiability>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i02d63145a04b47a48a5a20bb6671ce00_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjc5NTk1MWU4MGU3MzRlNTdhOGU0NTE3ZGE0Yjk3NmYwL3RhYmxlcmFuZ2U6Nzk1OTUxZTgwZTczNGU1N2E4ZTQ1MTdkYTRiOTc2ZjBfOC0xLTEtMS05MTI5_a2aec41d-00c2-4866-99c0-0606f4a66c0f"
      unitRef="usd">7080000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i99864d0f89d24a0cbafa25d8e194e0fd_I20190101"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjc5NTk1MWU4MGU3MzRlNTdhOGU0NTE3ZGE0Yjk3NmYwL3RhYmxlcmFuZ2U6Nzk1OTUxZTgwZTczNGU1N2E4ZTQ1MTdkYTRiOTc2ZjBfOC0zLTEtMS05MTMx_ba8cc892-9f12-4d62-afc7-b2a3ee942a5b"
      unitRef="usd">-6921000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="if48a6e4c69274938817f9b2089caf91b_I20190101"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV85Ny9mcmFnOjhlYTFlNDQ2MDJjODRlZGQ4MGNkMTE5MmVkYTQxMTdhL3RhYmxlOjc5NTk1MWU4MGU3MzRlNTdhOGU0NTE3ZGE0Yjk3NmYwL3RhYmxlcmFuZ2U6Nzk1OTUxZTgwZTczNGU1N2E4ZTQ1MTdkYTRiOTc2ZjBfOC01LTEtMS05MTMz_8a479641-1895-431c-aae9-1848ee4164db"
      unitRef="usd">159000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:BusinessCombinationDisclosureTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90ZXh0cmVnaW9uOmViYzdjMTU0MDdlYjQzNmQ4NzY1ZjhjZjMzZDMwNTNkXzUyNTE_604c4269-63c0-469d-bd90-db20858b6b52">Divestitures and Business Combinations&lt;div style="margin-bottom:6pt;margin-top:10pt;text-indent:36pt"&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;Divestiture of MyCase&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;On September 30, 2020, we completed the MyCase Transaction for $193.0&#160;million, consisting of $192.2&#160;million of cash proceeds, plus a $2.2&#160;million employee retention bonus pool funded by us, less cash divested of $0.8&#160;million and a preliminary working capital adjustment of $0.6&#160;million. The retention bonus pool is refundable to us to the extent that MyCase employees are terminated prior to the retention period, which is one year from the closing date of the MyCase Transaction. A portion of the cash proceeds was used to pay all outstanding borrowings under the Credit Facility. Refer to Note 10, &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;Long-Term Debt,&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 our Consolidated Financial Statements for more information about the termination of the Credit Facility. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We recognized a pre-tax gain on the sale of $187.7&#160;million on the MyCase Transaction, consisting of cash proceeds of $192.2&#160;million, less net assets divested of $4.6&#160;million. Net assets divested is primarily comprised of capitalized software development costs of $3.9&#160;million, deferred revenue of $2.8&#160;million and goodwill allocated to MyCase of $2.3&#160;million. The gain on the sale is included within &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;Other income (expense), net&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; in our Consolidated Statements of Operations. Income received in relation to the transition services provided by us to MyCase of $1.1&#160;million is included within &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;Other income (expense), net&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; in our Consolidated Statements of Operations. Refer to Note 1, &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;Nature of Business&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 our Consolidated Financial Statements for more information about the MyCase Transaction.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Acquisition of Dynasty&#160;&#160;&#160;&#160;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;On January 7, 2019, we acquired&#160;100%&#160;of the voting equity interest of Dynasty Marketplace, Inc. ("Dynasty") for $60.2 million, of which $6.0 million the "Holdback Amount") was retained by us to satisfy any necessary adjustments, including without limitation certain indemnification claims. The balance of the Holdback Amount, less any amount retained with respect to any unresolved indemnification claims, was released to the stockholders of Dynasty on January 10, 2020 in accordance with the terms of the purchase agreement. Dynasty is a provider of advanced artificial intelligence solutions for the real estate vertical, which automate leasing communications, replace manual tasks and help customers grow their portfolios.  &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The transaction was accounted for using the acquisition method and, as a result, assets acquired and liabilities assumed were recorded at their estimated fair values as of the acquisition date. Determining the fair value of assets acquired and liabilities assumed requires management to make significant judgments and estimates, including the selection of valuation methodologies and comparable companies, estimates of future revenue and cash flows, discount rates, and the software decay rate and database ramp up rate. The following table summarizes the final purchase price allocation (in thousands), as well as the estimated useful lives of the acquired intangible assets over which they are amortized on a straight-line basis, as this approximates the pattern in which we expect the economic benefits will be consumed:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:71.707%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.765%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.768%"/&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;Amount &lt;br/&gt;(in thousands)&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;Estimated Useful Life (in years)&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:10pt;font-weight:400;line-height:100%"&gt;Total current assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;305&#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;/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:10pt;font-weight:400;line-height:100%"&gt;Identified intangible assets:&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;/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:10pt;font-weight:400;line-height:100%"&gt;Technology&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:10pt;font-weight:400;line-height:100%"&gt;5,730&#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:10pt;font-weight:400;line-height:100%"&gt;4.0&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;Database&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:10pt;font-weight:400;line-height:100%"&gt;4,710&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;10.0&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:10pt;font-weight:400;line-height:100%"&gt;Customer relationships&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:10pt;font-weight:400;line-height:100%"&gt;1,110&#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:10pt;font-weight:400;line-height:100%"&gt;5.0&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;Backlog&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:10pt;font-weight:400;line-height:100%"&gt;470&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;1.0&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:10pt;font-weight:400;line-height:100%"&gt;Trademark &amp;amp; trade name&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:10pt;font-weight:400;line-height:100%"&gt;1,390&#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:10pt;font-weight:400;line-height:100%"&gt;10.0&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;Non-compete agreement&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:10pt;font-weight:400;line-height:100%"&gt;7,340&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;5.0&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:10pt;font-weight:400;line-height:100%"&gt;Total intangible assets subject to 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;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:10pt;font-weight:400;line-height:100%"&gt;20,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;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:10pt;font-weight:400;line-height:100%"&gt;6.0&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:10pt;font-weight:400;line-height:100%"&gt;Goodwill&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:10pt;font-weight:400;line-height:100%"&gt;42,877&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Indefinite&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:10pt;font-weight:400;line-height:100%"&gt;Other noncurrent 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:10pt;font-weight:400;line-height:100%"&gt;35&#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;/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:10pt;font-weight:400;line-height:100%"&gt;Total assets acquired&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:10pt;font-weight:400;line-height:100%"&gt;63,967&#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="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr style="height:15pt"&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 #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;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:10pt;font-weight:400;line-height:100%"&gt;Accrued and other 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;padding:2px 0 2px 1pt;text-align:right;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;48&#160;&lt;/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;/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:10pt;font-weight:400;line-height:100%"&gt;Deferred tax liability, net &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:10pt;font-weight:400;line-height:100%"&gt;3,711&#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;/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:10pt;font-weight:400;line-height:100%"&gt;Total liabilities assumed&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:10pt;font-weight:400;line-height:100%"&gt;3,759&#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="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;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;Purchase consideration&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;60,208&#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 colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Goodwill is mainly attributable to synergies expected from the acquisition and assembled workforce and is non-deductible for U.S. federal income tax purposes. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We incurred a total of $0.3 million in transaction costs related to the acquisition and expensed all transaction costs incurred during the period in which such service was received. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Pro Forma Results of Operations&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;&#160;&#160;&#160;&#160;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 unaudited pro forma information has been prepared for illustrative purposes only, and assumes that the aforementioned Dynasty acquisition occurred on January 1, 2018, and includes pro forma adjustments related to the amortization of acquired intangible assets, elimination of historical interest and amortization expense, income taxes, compensation arrangements, and the transaction costs incurred. The unaudited pro forma results have been prepared based on estimates and assumptions, which we believe are reasonable; however, they are not necessarily indicative of the consolidated results of operations had the acquisitions occurred at the beginning of the periods presented, or of future results of operations. The unaudited pro forma results are as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:71.707%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&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 colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.765%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.768%"/&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="display:none"/&gt;&lt;td colspan="3" style="display:none"/&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;Year 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="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="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;2019&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;2018&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:10pt;font-weight:400;line-height:100%"&gt;Revenue&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&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 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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;256,047&#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 #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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;193,405&#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:10pt;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 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="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;32,339&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;5,937&#160;&lt;/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:BusinessCombinationDisclosureTextBlock>
    <us-gaap:DisposalGroupIncludingDiscontinuedOperationConsideration
      contextRef="i25006d5d67bf47229384f8b1670eb090_I20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90ZXh0cmVnaW9uOmViYzdjMTU0MDdlYjQzNmQ4NzY1ZjhjZjMzZDMwNTNkXzQ5NDc4MDIzMzIyNjA_b1090b0f-4b25-4cc9-98de-8dc22c4b4dcc"
      unitRef="usd">193000000.0</us-gaap:DisposalGroupIncludingDiscontinuedOperationConsideration>
    <us-gaap:ProceedsFromDivestitureOfInterestInConsolidatedSubsidiaries
      contextRef="ibbf341c3878c4cc892fbbf6b21f3784b_D20200930-20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90ZXh0cmVnaW9uOmViYzdjMTU0MDdlYjQzNmQ4NzY1ZjhjZjMzZDMwNTNkXzQ5NDc4MDIzMzIyNzY_47ef9d1e-29b7-41ec-b739-2f8886864b80"
      unitRef="usd">192200000</us-gaap:ProceedsFromDivestitureOfInterestInConsolidatedSubsidiaries>
    <us-gaap:NoncashOrPartNoncashDivestitureAmountOfConsiderationReceived1
      contextRef="ibbf341c3878c4cc892fbbf6b21f3784b_D20200930-20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90ZXh0cmVnaW9uOmViYzdjMTU0MDdlYjQzNmQ4NzY1ZjhjZjMzZDMwNTNkXzQ5NDc4MDIzMzIyOTI_a15ebfd0-037a-4885-99eb-b14346d805ce"
      unitRef="usd">2200000</us-gaap:NoncashOrPartNoncashDivestitureAmountOfConsiderationReceived1>
    <us-gaap:CashDivestedFromDeconsolidation
      contextRef="ibbf341c3878c4cc892fbbf6b21f3784b_D20200930-20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90ZXh0cmVnaW9uOmViYzdjMTU0MDdlYjQzNmQ4NzY1ZjhjZjMzZDMwNTNkXzQ5NDc4MDIzMzIzMDY_38e68e37-950d-4d50-b482-c8a8da556f15"
      unitRef="usd">800000</us-gaap:CashDivestedFromDeconsolidation>
    <appf:DisposalGroupIncludingDiscontinuedOperationWorkingCapitalAdjustment
      contextRef="ibbf341c3878c4cc892fbbf6b21f3784b_D20200930-20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90ZXh0cmVnaW9uOmViYzdjMTU0MDdlYjQzNmQ4NzY1ZjhjZjMzZDMwNTNkXzQ5NDc4MDIzMzIzMjA_7d43df11-12d2-49d0-a060-e1f4393372ff"
      unitRef="usd">600000</appf:DisposalGroupIncludingDiscontinuedOperationWorkingCapitalAdjustment>
    <appf:DisposalGroupIncludingDiscontinuedOperationRetentionPeriod
      contextRef="ibbf341c3878c4cc892fbbf6b21f3784b_D20200930-20200930"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90ZXh0cmVnaW9uOmViYzdjMTU0MDdlYjQzNmQ4NzY1ZjhjZjMzZDMwNTNkXzcxNDY4MjU1OTU0Nzk_db8326e3-8fd8-4077-b2cf-444e6256e3fe">P1Y</appf:DisposalGroupIncludingDiscontinuedOperationRetentionPeriod>
    <us-gaap:DiscontinuedOperationGainLossFromDisposalOfDiscontinuedOperationBeforeIncomeTax
      contextRef="ibbf341c3878c4cc892fbbf6b21f3784b_D20200930-20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90ZXh0cmVnaW9uOmViYzdjMTU0MDdlYjQzNmQ4NzY1ZjhjZjMzZDMwNTNkXzQ5NDc4MDIzMzIzMzQ_427bd64b-e1eb-4cef-8951-dcfe3a113799"
      unitRef="usd">187700000</us-gaap:DiscontinuedOperationGainLossFromDisposalOfDiscontinuedOperationBeforeIncomeTax>
    <us-gaap:ProceedsFromDivestitureOfInterestInConsolidatedSubsidiaries
      contextRef="ibbf341c3878c4cc892fbbf6b21f3784b_D20200930-20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90ZXh0cmVnaW9uOmViYzdjMTU0MDdlYjQzNmQ4NzY1ZjhjZjMzZDMwNTNkXzQ5NDc4MDIzMzIzNTA_2af614ba-532a-432d-b87d-2eea4cc61008"
      unitRef="usd">192200000</us-gaap:ProceedsFromDivestitureOfInterestInConsolidatedSubsidiaries>
    <us-gaap:AssetsOfDisposalGroupIncludingDiscontinuedOperation
      contextRef="i25006d5d67bf47229384f8b1670eb090_I20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90ZXh0cmVnaW9uOmViYzdjMTU0MDdlYjQzNmQ4NzY1ZjhjZjMzZDMwNTNkXzQ5NDc4MDIzMzIzNjY_9b6ef110-34b2-4ab4-9f09-5dc7961ece39"
      unitRef="usd">4600000</us-gaap:AssetsOfDisposalGroupIncludingDiscontinuedOperation>
    <appf:DisposalGroupIncludingDiscontinuedOperationCapitalizedSoftware
      contextRef="i25006d5d67bf47229384f8b1670eb090_I20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90ZXh0cmVnaW9uOmViYzdjMTU0MDdlYjQzNmQ4NzY1ZjhjZjMzZDMwNTNkXzQ5NDc4MDIzMzIzODA_d95fa78d-9aed-4419-9bf3-70ed60f46cc6"
      unitRef="usd">3900000</appf:DisposalGroupIncludingDiscontinuedOperationCapitalizedSoftware>
    <us-gaap:DisposalGroupIncludingDiscontinuedOperationDeferredRevenue
      contextRef="i25006d5d67bf47229384f8b1670eb090_I20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90ZXh0cmVnaW9uOmViYzdjMTU0MDdlYjQzNmQ4NzY1ZjhjZjMzZDMwNTNkXzQ5NDc4MDIzMzIzOTQ_5a434727-cf1b-4df2-9db5-6ac0308e3e7c"
      unitRef="usd">2800000</us-gaap:DisposalGroupIncludingDiscontinuedOperationDeferredRevenue>
    <us-gaap:DisposalGroupIncludingDiscontinuedOperationGoodwill1
      contextRef="i25006d5d67bf47229384f8b1670eb090_I20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90ZXh0cmVnaW9uOmViYzdjMTU0MDdlYjQzNmQ4NzY1ZjhjZjMzZDMwNTNkXzQ5NDc4MDIzMzI0MDg_47104c53-14ff-4463-8de1-98464304fd53"
      unitRef="usd">2300000</us-gaap:DisposalGroupIncludingDiscontinuedOperationGoodwill1>
    <us-gaap:DisposalGroupIncludingDiscontinuedOperationOtherIncome
      contextRef="ibbf341c3878c4cc892fbbf6b21f3784b_D20200930-20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90ZXh0cmVnaW9uOmViYzdjMTU0MDdlYjQzNmQ4NzY1ZjhjZjMzZDMwNTNkXzY1OTcwNjk3ODE2Njc_5e52cd9a-9b7e-434d-a6c0-35e443a12c54"
      unitRef="usd">1100000</us-gaap:DisposalGroupIncludingDiscontinuedOperationOtherIncome>
    <us-gaap:BusinessAcquisitionPercentageOfVotingInterestsAcquired
      contextRef="i2d60ae6645b148edbbdc326bbfaa22e0_I20190107"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90ZXh0cmVnaW9uOmViYzdjMTU0MDdlYjQzNmQ4NzY1ZjhjZjMzZDMwNTNkXzkw_d09ef0d9-943a-4672-aeca-8548f5f6e986"
      unitRef="number">1</us-gaap:BusinessAcquisitionPercentageOfVotingInterestsAcquired>
    <appf:BusinessCombinationConsiderationTotalPriorToAdjustments
      contextRef="idc8ee32b1d5841afbe09b338f5221edb_D20190107-20190107"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90ZXh0cmVnaW9uOmViYzdjMTU0MDdlYjQzNmQ4NzY1ZjhjZjMzZDMwNTNkXzU2OQ_445cb0aa-999d-4ef0-9377-277406e0e48c"
      unitRef="usd">60200000</appf:BusinessCombinationConsiderationTotalPriorToAdjustments>
    <appf:BusinessCombinationConsiderationTransferredEscrowAmount
      contextRef="idc8ee32b1d5841afbe09b338f5221edb_D20190107-20190107"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90ZXh0cmVnaW9uOmViYzdjMTU0MDdlYjQzNmQ4NzY1ZjhjZjMzZDMwNTNkXzU4Mg_e1870e7f-93f3-47a4-b1fe-5bd1d6e79da7"
      unitRef="usd">6000000.0</appf:BusinessCombinationConsiderationTransferredEscrowAmount>
    <us-gaap:ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90ZXh0cmVnaW9uOmViYzdjMTU0MDdlYjQzNmQ4NzY1ZjhjZjMzZDMwNTNkXzUyNTY_dfb286f2-85a7-45ee-9a53-e3de13fa7254">The following table summarizes the final purchase price allocation (in thousands), as well as the estimated useful lives of the acquired intangible assets over which they are amortized on a straight-line basis, as this approximates the pattern in which we expect the economic benefits will be consumed:&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:71.707%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.765%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.768%"/&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;Amount &lt;br/&gt;(in thousands)&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;Estimated Useful Life (in years)&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:10pt;font-weight:400;line-height:100%"&gt;Total current assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;305&#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;/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:10pt;font-weight:400;line-height:100%"&gt;Identified intangible assets:&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;/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:10pt;font-weight:400;line-height:100%"&gt;Technology&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:10pt;font-weight:400;line-height:100%"&gt;5,730&#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:10pt;font-weight:400;line-height:100%"&gt;4.0&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;Database&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:10pt;font-weight:400;line-height:100%"&gt;4,710&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;10.0&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:10pt;font-weight:400;line-height:100%"&gt;Customer relationships&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:10pt;font-weight:400;line-height:100%"&gt;1,110&#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:10pt;font-weight:400;line-height:100%"&gt;5.0&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;Backlog&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:10pt;font-weight:400;line-height:100%"&gt;470&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;1.0&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:10pt;font-weight:400;line-height:100%"&gt;Trademark &amp;amp; trade name&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:10pt;font-weight:400;line-height:100%"&gt;1,390&#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:10pt;font-weight:400;line-height:100%"&gt;10.0&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;Non-compete agreement&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:10pt;font-weight:400;line-height:100%"&gt;7,340&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;5.0&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:10pt;font-weight:400;line-height:100%"&gt;Total intangible assets subject to 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;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:10pt;font-weight:400;line-height:100%"&gt;20,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;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:10pt;font-weight:400;line-height:100%"&gt;6.0&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:10pt;font-weight:400;line-height:100%"&gt;Goodwill&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:10pt;font-weight:400;line-height:100%"&gt;42,877&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Indefinite&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:10pt;font-weight:400;line-height:100%"&gt;Other noncurrent 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:10pt;font-weight:400;line-height:100%"&gt;35&#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;/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:10pt;font-weight:400;line-height:100%"&gt;Total assets acquired&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:10pt;font-weight:400;line-height:100%"&gt;63,967&#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="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr style="height:15pt"&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 #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;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:10pt;font-weight:400;line-height:100%"&gt;Accrued and other 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;padding:2px 0 2px 1pt;text-align:right;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;48&#160;&lt;/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;/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:10pt;font-weight:400;line-height:100%"&gt;Deferred tax liability, net &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:10pt;font-weight:400;line-height:100%"&gt;3,711&#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;/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:10pt;font-weight:400;line-height:100%"&gt;Total liabilities assumed&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:10pt;font-weight:400;line-height:100%"&gt;3,759&#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="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;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;Purchase consideration&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;60,208&#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 colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;/table&gt;</us-gaap:ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets
      contextRef="i2d60ae6645b148edbbdc326bbfaa22e0_I20190107"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZTplY2E2NGQ1YzBlNTc0MWY0OWNkMDZjNjY5YWZhZDkzOC90YWJsZXJhbmdlOmVjYTY0ZDVjMGU1NzQxZjQ5Y2QwNmM2NjlhZmFkOTM4XzEtMi0xLTEtMA_f258066f-6045-4bc4-bb15-ce0c9fe70130"
      unitRef="usd">305000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles
      contextRef="i4c7848f33a1048f88ca559d8addb4dd3_I20190107"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZTplY2E2NGQ1YzBlNTc0MWY0OWNkMDZjNjY5YWZhZDkzOC90YWJsZXJhbmdlOmVjYTY0ZDVjMGU1NzQxZjQ5Y2QwNmM2NjlhZmFkOTM4XzMtMi0xLTEtMA_d5ca50f4-6cf5-46c5-8b26-61b1d6651a37"
      unitRef="usd">5730000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles>
    <us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife
      contextRef="ie3749537f4934e1b9c5e97c74cec129c_D20190107-20190107"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZTplY2E2NGQ1YzBlNTc0MWY0OWNkMDZjNjY5YWZhZDkzOC90YWJsZXJhbmdlOmVjYTY0ZDVjMGU1NzQxZjQ5Y2QwNmM2NjlhZmFkOTM4XzMtNC0xLTEtMA_c4ebc459-985e-488a-8dd0-687286d3df62">P4Y</us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles
      contextRef="i9d875afba5694b19b69b6e6b34d4d43a_I20190107"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZTplY2E2NGQ1YzBlNTc0MWY0OWNkMDZjNjY5YWZhZDkzOC90YWJsZXJhbmdlOmVjYTY0ZDVjMGU1NzQxZjQ5Y2QwNmM2NjlhZmFkOTM4XzQtMi0xLTEtMA_e1fff8f0-f091-46cb-8d28-8c5a9edcf5ca"
      unitRef="usd">4710000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles>
    <us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife
      contextRef="if70a6727567142929980877fade17471_D20190107-20190107"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZTplY2E2NGQ1YzBlNTc0MWY0OWNkMDZjNjY5YWZhZDkzOC90YWJsZXJhbmdlOmVjYTY0ZDVjMGU1NzQxZjQ5Y2QwNmM2NjlhZmFkOTM4XzQtNC0xLTEtMA_a86a9eb6-5dd6-4e48-8f4f-22b6b4160666">P10Y</us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles
      contextRef="icd2278e6bb104cf2b98610aaafb99846_I20190107"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZTplY2E2NGQ1YzBlNTc0MWY0OWNkMDZjNjY5YWZhZDkzOC90YWJsZXJhbmdlOmVjYTY0ZDVjMGU1NzQxZjQ5Y2QwNmM2NjlhZmFkOTM4XzUtMi0xLTEtMA_387b484b-2114-4504-8984-b671f64b6138"
      unitRef="usd">1110000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles>
    <us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife
      contextRef="i609d9b36182b4d279927c63935b1622a_D20190107-20190107"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZTplY2E2NGQ1YzBlNTc0MWY0OWNkMDZjNjY5YWZhZDkzOC90YWJsZXJhbmdlOmVjYTY0ZDVjMGU1NzQxZjQ5Y2QwNmM2NjlhZmFkOTM4XzUtNC0xLTEtMA_52fde09a-3c51-4968-a6e3-94fa8a4b0fc3">P5Y</us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles
      contextRef="i3ce17488f92b40949fc9278d4c2f6360_I20190107"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZTplY2E2NGQ1YzBlNTc0MWY0OWNkMDZjNjY5YWZhZDkzOC90YWJsZXJhbmdlOmVjYTY0ZDVjMGU1NzQxZjQ5Y2QwNmM2NjlhZmFkOTM4XzYtMi0xLTEtMA_e3f623ae-7b57-492d-8fcc-378e43b0bbbc"
      unitRef="usd">470000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles>
    <us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife
      contextRef="i2bed893afd274119b5f5e1aee82e3a43_D20190107-20190107"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZTplY2E2NGQ1YzBlNTc0MWY0OWNkMDZjNjY5YWZhZDkzOC90YWJsZXJhbmdlOmVjYTY0ZDVjMGU1NzQxZjQ5Y2QwNmM2NjlhZmFkOTM4XzYtNC0xLTEtMA_72284c7f-3a2b-415d-85ce-fe3e2e9dd832">P1Y</us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles
      contextRef="i4d0a8d8ecf0841258eb6f60a7f8f23e4_I20190107"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZTplY2E2NGQ1YzBlNTc0MWY0OWNkMDZjNjY5YWZhZDkzOC90YWJsZXJhbmdlOmVjYTY0ZDVjMGU1NzQxZjQ5Y2QwNmM2NjlhZmFkOTM4XzctMi0xLTEtMA_dda63ee4-1f90-4d2a-a763-55e3cb3ee0a4"
      unitRef="usd">1390000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles>
    <us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife
      contextRef="i7d87e35597934392b2904d7e25a9f6c4_D20190107-20190107"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZTplY2E2NGQ1YzBlNTc0MWY0OWNkMDZjNjY5YWZhZDkzOC90YWJsZXJhbmdlOmVjYTY0ZDVjMGU1NzQxZjQ5Y2QwNmM2NjlhZmFkOTM4XzctNC0xLTEtMA_c651b0ee-f2f0-4232-9a05-380d6344d9f1">P10Y</us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles
      contextRef="i43099fb76a384b87b43d53efd2a3909c_I20190107"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZTplY2E2NGQ1YzBlNTc0MWY0OWNkMDZjNjY5YWZhZDkzOC90YWJsZXJhbmdlOmVjYTY0ZDVjMGU1NzQxZjQ5Y2QwNmM2NjlhZmFkOTM4XzgtMi0xLTEtMA_78f136aa-973f-4e5f-8add-2b41932ed7ae"
      unitRef="usd">7340000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles>
    <us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife
      contextRef="i00cae34e5d5446ba8e1a2cdd41b544d9_D20190107-20190107"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZTplY2E2NGQ1YzBlNTc0MWY0OWNkMDZjNjY5YWZhZDkzOC90YWJsZXJhbmdlOmVjYTY0ZDVjMGU1NzQxZjQ5Y2QwNmM2NjlhZmFkOTM4XzgtNC0xLTEtMA_1bee1e79-b171-4dc8-b842-1ee7a263eca1">P5Y</us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles
      contextRef="i2d60ae6645b148edbbdc326bbfaa22e0_I20190107"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZTplY2E2NGQ1YzBlNTc0MWY0OWNkMDZjNjY5YWZhZDkzOC90YWJsZXJhbmdlOmVjYTY0ZDVjMGU1NzQxZjQ5Y2QwNmM2NjlhZmFkOTM4XzktMi0xLTEtMA_2de846a3-1a1f-4772-8db6-59422a30944d"
      unitRef="usd">20750000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles>
    <us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife
      contextRef="idc8ee32b1d5841afbe09b338f5221edb_D20190107-20190107"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZTplY2E2NGQ1YzBlNTc0MWY0OWNkMDZjNjY5YWZhZDkzOC90YWJsZXJhbmdlOmVjYTY0ZDVjMGU1NzQxZjQ5Y2QwNmM2NjlhZmFkOTM4XzktNC0xLTEtMA_83955f6a-da47-4032-8bdb-cd55b8e2c2b5">P6Y</us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife>
    <us-gaap:Goodwill
      contextRef="i2d60ae6645b148edbbdc326bbfaa22e0_I20190107"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZTplY2E2NGQ1YzBlNTc0MWY0OWNkMDZjNjY5YWZhZDkzOC90YWJsZXJhbmdlOmVjYTY0ZDVjMGU1NzQxZjQ5Y2QwNmM2NjlhZmFkOTM4XzEwLTItMS0xLTA_3d094d01-4619-43cf-8017-0ceaa9bf6add"
      unitRef="usd">42877000</us-gaap:Goodwill>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets
      contextRef="i2d60ae6645b148edbbdc326bbfaa22e0_I20190107"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZTplY2E2NGQ1YzBlNTc0MWY0OWNkMDZjNjY5YWZhZDkzOC90YWJsZXJhbmdlOmVjYTY0ZDVjMGU1NzQxZjQ5Y2QwNmM2NjlhZmFkOTM4XzExLTItMS0xLTA_f8b3201b-cdd6-4115-9412-859cf48ebe3e"
      unitRef="usd">35000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets
      contextRef="i2d60ae6645b148edbbdc326bbfaa22e0_I20190107"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZTplY2E2NGQ1YzBlNTc0MWY0OWNkMDZjNjY5YWZhZDkzOC90YWJsZXJhbmdlOmVjYTY0ZDVjMGU1NzQxZjQ5Y2QwNmM2NjlhZmFkOTM4XzEyLTItMS0xLTA_078d6c7d-c111-4686-aed9-986e41fc2013"
      unitRef="usd">63967000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities
      contextRef="i2d60ae6645b148edbbdc326bbfaa22e0_I20190107"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZTplY2E2NGQ1YzBlNTc0MWY0OWNkMDZjNjY5YWZhZDkzOC90YWJsZXJhbmdlOmVjYTY0ZDVjMGU1NzQxZjQ5Y2QwNmM2NjlhZmFkOTM4XzE0LTItMS0xLTA_464521fe-500f-474d-8f04-9467c1256959"
      unitRef="usd">48000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities
      contextRef="i2d60ae6645b148edbbdc326bbfaa22e0_I20190107"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZTplY2E2NGQ1YzBlNTc0MWY0OWNkMDZjNjY5YWZhZDkzOC90YWJsZXJhbmdlOmVjYTY0ZDVjMGU1NzQxZjQ5Y2QwNmM2NjlhZmFkOTM4XzE1LTItMS0xLTA_b155cb74-150b-4a97-a46f-b94979c4a3c5"
      unitRef="usd">3711000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities
      contextRef="i2d60ae6645b148edbbdc326bbfaa22e0_I20190107"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZTplY2E2NGQ1YzBlNTc0MWY0OWNkMDZjNjY5YWZhZDkzOC90YWJsZXJhbmdlOmVjYTY0ZDVjMGU1NzQxZjQ5Y2QwNmM2NjlhZmFkOTM4XzE2LTItMS0xLTA_d8b64ba6-4210-48ee-9c7b-1512025de9e7"
      unitRef="usd">3759000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet
      contextRef="i2d60ae6645b148edbbdc326bbfaa22e0_I20190107"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZTplY2E2NGQ1YzBlNTc0MWY0OWNkMDZjNjY5YWZhZDkzOC90YWJsZXJhbmdlOmVjYTY0ZDVjMGU1NzQxZjQ5Y2QwNmM2NjlhZmFkOTM4XzE3LTItMS0xLTA_1637442a-8c5a-49be-827c-db9597d0b96c"
      unitRef="usd">60208000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet>
    <us-gaap:BusinessAcquisitionCostOfAcquiredEntityTransactionCosts
      contextRef="i2d60ae6645b148edbbdc326bbfaa22e0_I20190107"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90ZXh0cmVnaW9uOmViYzdjMTU0MDdlYjQzNmQ4NzY1ZjhjZjMzZDMwNTNkXzIwNzI_a0255127-65c8-499e-b61e-9d9528b87ae1"
      unitRef="usd">300000</us-gaap:BusinessAcquisitionCostOfAcquiredEntityTransactionCosts>
    <us-gaap:BusinessAcquisitionProFormaInformationTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90ZXh0cmVnaW9uOmViYzdjMTU0MDdlYjQzNmQ4NzY1ZjhjZjMzZDMwNTNkXzUyNTk_cf1df07b-b2f9-4b40-8e25-58ba4b91168b">The unaudited pro forma results are as follows (in thousands):&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:71.707%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&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 colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.765%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.768%"/&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="display:none"/&gt;&lt;td colspan="3" style="display:none"/&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;Year 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="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="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;2019&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;2018&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:10pt;font-weight:400;line-height:100%"&gt;Revenue&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&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 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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;256,047&#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 #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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;193,405&#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:10pt;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 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="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;32,339&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;5,937&#160;&lt;/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;</us-gaap:BusinessAcquisitionProFormaInformationTextBlock>
    <us-gaap:BusinessAcquisitionsProFormaRevenue
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZToxNWE0NjAwMmM5ZmY0NjQyOGIzYzViN2NlOWI2MDUzNi90YWJsZXJhbmdlOjE1YTQ2MDAyYzlmZjQ2NDI4YjNjNWI3Y2U5YjYwNTM2XzItOC0xLTEtMA_3a984d38-ca90-40cd-970a-480030941f31"
      unitRef="usd">256047000</us-gaap:BusinessAcquisitionsProFormaRevenue>
    <us-gaap:BusinessAcquisitionsProFormaRevenue
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZToxNWE0NjAwMmM5ZmY0NjQyOGIzYzViN2NlOWI2MDUzNi90YWJsZXJhbmdlOjE1YTQ2MDAyYzlmZjQ2NDI4YjNjNWI3Y2U5YjYwNTM2XzItOC0xLTEtNjUzMw_447cb717-3306-42eb-a099-5af74af92b6a"
      unitRef="usd">193405000</us-gaap:BusinessAcquisitionsProFormaRevenue>
    <us-gaap:BusinessAcquisitionsProFormaNetIncomeLoss
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZToxNWE0NjAwMmM5ZmY0NjQyOGIzYzViN2NlOWI2MDUzNi90YWJsZXJhbmdlOjE1YTQ2MDAyYzlmZjQ2NDI4YjNjNWI3Y2U5YjYwNTM2XzMtOC0xLTEtMA_b9113cf7-6fe4-4d22-879b-9671343e41fa"
      unitRef="usd">32339000</us-gaap:BusinessAcquisitionsProFormaNetIncomeLoss>
    <us-gaap:BusinessAcquisitionsProFormaNetIncomeLoss
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDMvZnJhZzplYmM3YzE1NDA3ZWI0MzZkODc2NWY4Y2YzM2QzMDUzZC90YWJsZToxNWE0NjAwMmM5ZmY0NjQyOGIzYzViN2NlOWI2MDUzNi90YWJsZXJhbmdlOjE1YTQ2MDAyYzlmZjQ2NDI4YjNjNWI3Y2U5YjYwNTM2XzMtOC0xLTEtNjUzMw_79354319-a3a4-44fa-9d49-272c8d5b1b5a"
      unitRef="usd">5937000</us-gaap:BusinessAcquisitionsProFormaNetIncomeLoss>
    <appf:InvestmentSecuritiesAndFairValueMeasurementsDisclosureTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90ZXh0cmVnaW9uOmRhMjMxODYxNjY3ZTRhMzc4OWU5Zjk2YWY5ZDkyZWM4XzM1NjI_0a26cd6c-9b2f-4674-bf77-876250706392">Investment Securities and Fair Value Measurements&lt;div style="margin-bottom:6pt;margin-top:10pt;text-indent:36pt"&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;Investment Securities&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Investment securities classified as available-for-sale consisted of the following at December&#160;31, 2020 and 2019 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.565%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.568%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.440%"/&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="21" 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, 2020&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="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;Amortized Cost&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;Gross Unrealized Gains&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;Gross Unrealized Losses&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;Estimated Fair Value&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;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:10pt;font-weight:400;line-height:100%"&gt;Agency securities&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;17,104&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;29&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(1)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;17,132&#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;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:10pt;font-weight:400;line-height:100%"&gt;Treasury 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:10pt;font-weight:400;line-height:100%"&gt;17,847&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;47&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;17,894&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Total available-for-sale investment securities&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 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;$&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:10pt;font-weight:400;line-height:100%"&gt;34,951&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;76&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(1)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;35,026&#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:23pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.565%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.568%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.440%"/&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="21" 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, 2019&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="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;Amortized Cost&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;Gross Unrealized Gains&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;Gross Unrealized Losses&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;Estimated Fair Value&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:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;9,597&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;18&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(1)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;9,614&#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:10pt;font-weight:400;line-height:100%"&gt;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:10pt;font-weight:400;line-height:100%"&gt;11,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:10pt;font-weight:400;line-height:100%"&gt;17&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;11,118&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Treasury 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:10pt;font-weight:400;line-height:100%"&gt;14,222&#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:10pt;font-weight:400;line-height:100%"&gt;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;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:10pt;font-weight:400;line-height:100%"&gt;(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;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:10pt;font-weight:400;line-height:100%"&gt;14,233&#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:10pt;font-weight:400;line-height:100%"&gt;Total available-for-sale investment securities&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 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;$&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:10pt;font-weight:400;line-height:100%"&gt;34,920&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;47&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(2)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;34,965&#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-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;At December 31, 2019, the unrealized losses on investment securities which have been in a net loss position for twelve months or greater were not material. These unrealized losses are considered temporary and there were no impairments considered to be "other-than-temporary" based on our evaluation of available evidence, which includes our intent to hold these investments to maturity or a recovery of the cost basis.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;At December&#160;31, 2020 and 2019, the contractual maturities of our investments did not exceed&#160;36 months. The fair values of available-for-sale investments, by remaining contractual maturity, are as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:23pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.565%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.131%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.964%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.440%"/&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="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, 2020&lt;/span&gt;&lt;/td&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, 2019&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="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;Amortized Cost&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;Estimated Fair Value&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;Amortized Cost&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;Estimated Fair Value&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:10pt;font-weight:400;line-height:100%"&gt;Due in one year or less&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;28,197&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;28,256&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;22,846&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;22,876&#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:10pt;font-weight:400;line-height:100%"&gt;Due after one year through three years&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:10pt;font-weight:400;line-height:100%"&gt;6,754&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;6,770&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;12,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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;12,089&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Total available-for-sale investment securities&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 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;$&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:10pt;font-weight:400;line-height:100%"&gt;34,951&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;35,026&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;34,920&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;34,965&#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:6pt;margin-top:12pt;text-indent:36pt"&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, 2020 and 2019, we had sales and maturities (which include calls) of investment securities, as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:23pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.565%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.568%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.440%"/&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="21" 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;Year Ended December 31, 2020&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="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;Gross Realized Gains&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;Gross Realized Losses&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;Gross Proceeds from Sales &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;Gross Proceeds from Maturities&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:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;6&#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:10pt;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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,006&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;5,600&#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:10pt;font-weight:400;line-height:100%"&gt;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:10pt;font-weight:400;line-height:100%"&gt;25&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;7,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:10pt;font-weight:400;line-height:100%"&gt;1,900&#160;&lt;/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;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:10pt;font-weight:400;line-height:100%"&gt;Treasury 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:10pt;font-weight:400;line-height:100%"&gt;4&#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:10pt;font-weight:400;line-height:100%"&gt;(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:10pt;font-weight:400;line-height:100%"&gt;4,827&#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:10pt;font-weight:400;line-height:100%"&gt;19,830&#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 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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;35&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(2)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;16,711&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;27,330&#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-bottom:6pt;margin-top:12pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:98.840%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.155%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.536%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.536%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.536%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.538%"/&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="21" 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;Year Ended December 31, 2019&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="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;Gross Realized Gains&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;Gross Realized Losses&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;Gross Proceeds from Sales&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;Gross Proceeds from Maturities&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:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&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:10pt;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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(1)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;2,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;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;11,350&#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:10pt;font-weight:400;line-height:100%"&gt;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:10pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;3,625&#160;&lt;/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;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:10pt;font-weight:400;line-height:100%"&gt;Treasury 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:10pt;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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;685&#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;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:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;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:10pt;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: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:10pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;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="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;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:10pt;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: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:10pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;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="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;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:10pt;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: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:10pt;font-weight:400;line-height:100%"&gt;2,750&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;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="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;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:10pt;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: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:10pt;font-weight:400;line-height:100%"&gt;15,660&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;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-bottom:6pt;margin-top:12pt;text-align:justify;text-indent:36pt"&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, 2020, 2019 and 2018 we received interest income net of the amortization and accretion of the premium and discount of $0.3 million, $0.6 million, and $1.0 million, respectively.&#160;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&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 Measurements&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Recurring Fair Value Measurements&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Financial assets and financial liabilities are classified in their entirety based on the lowest level of input that is significant to the fair value measurement. The following tables present our financial assets and liabilities measured at fair value on a recurring basis at December&#160;31, 2020 and 2019, by level within the fair value hierarchy (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:17pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.565%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.568%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.440%"/&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:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="21" 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, 2020&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: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;Level&#160;1&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;Level&#160;2&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;Level 3&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;Total&#160;Fair&lt;br/&gt;Value&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:10pt;font-weight:400;line-height:100%"&gt;Cash equivalents:&lt;/span&gt;&lt;/td&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 7.75pt;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;Money market funds&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,749&#160;&lt;/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:10pt;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:10pt;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:10pt;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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,749&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Treasury 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:10pt;font-weight:400;line-height:100%"&gt;97,433&#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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;97,433&#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:10pt;font-weight:400;line-height:100%"&gt;Available-for-sale investment securities:&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;/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;/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:10pt;font-weight:400;line-height:100%"&gt;Agency 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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;17,132&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;17,132&#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;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:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;Treasury 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:10pt;font-weight:400;line-height:100%"&gt;17,894&#160;&lt;/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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;17,894&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Total&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 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;$&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:10pt;font-weight:400;line-height:100%"&gt;120,076&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;17,132&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;137,208&#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:12pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.565%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.568%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.440%"/&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="21" 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, 2019&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="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;Level&#160;1&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;Level&#160;2&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;Level 3&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;Total&#160;Fair&lt;br/&gt;Value&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:10pt;font-weight:400;line-height:100%"&gt;Cash equivalents:&lt;/span&gt;&lt;/td&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 7.75pt;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;Money market funds&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;337&#160;&lt;/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:10pt;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:10pt;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:10pt;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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;337&#160;&lt;/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;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:10pt;font-weight:400;line-height:100%"&gt;Available-for-sale investment 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;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 7.75pt;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;Corporate bonds&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;9,614&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;9,614&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Agency 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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;11,118&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;11,118&#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;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 7.75pt;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;Treasury 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:10pt;font-weight:400;line-height:100%"&gt;14,233&#160;&lt;/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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;14,233&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;14,570&#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="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;20,732&#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="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#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="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;35,302&#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;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:12pt;text-indent:36pt"&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 equivalents, restricted cash, accounts receivable, accounts payable and accrued liabilities approximate fair value because of the short maturity of these items. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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, 2019, the estimated fair value of the $50.0&#160;million term loan issued by Wells Fargo Bank, National Association ("Wells Fargo"), as administrative agent, and the lenders that are parties thereto ("Term Loan") and the $50.0&#160;million revolving credit facility made available to us by Wells Fargo and the lenders that are parties thereto ("Revolving Facility," and, together with the Term Loan, the "Credit Facility"), approximated their carrying values due to the variable interest rates. We considered the fair value of the Credit Facility to be Level 2 measurements as these debt instruments were not actively traded. We carried the Term Loan at face value less the unamortized discount. Refer to Note 10, &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;Long-Term Debt, &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 our Consolidated Financial Statements for more information about our since-terminated Credit Facility.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;There were no changes to our valuation techniques used to measure asset and liability fair values on a recurring basis during the&#160;year ended December&#160;31, 2020. The valuation techniques for the financial assets in the tables above are as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 Equivalents&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;At December&#160;31, 2020 and 2019, cash equivalents include cash invested in money market funds and treasury securities with a maturity of three months or less. Fair value is based on market prices for identical assets.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Available-for-Sale Investment Securities&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Fair value for our Level 1 investment securities is based on market prices for identical assets. Our Level 2 securities were priced by a pricing vendor. The pricing vendor utilizes the most recent observable market information in pricing these securities or, if specific prices are not available for these securities, other observable inputs like market transactions involving comparable securities are used.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Non-Recurring Fair Value Measurements&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Certain assets, including goodwill, intangible assets and our note receivable with SecureDocs, Inc., are also subject to measurement at fair value on a non-recurring basis using Level 3 measurement, but only when they are deemed to be impaired.  For the years ended&#160;December&#160;31, 2020, 2019 and 2018, no impairments were identified on those assets required to be measured at fair value on a non-recurring basis.&lt;/span&gt;&lt;/div&gt;</appf:InvestmentSecuritiesAndFairValueMeasurementsDisclosureTextBlock>
    <us-gaap:ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90ZXh0cmVnaW9uOmRhMjMxODYxNjY3ZTRhMzc4OWU5Zjk2YWY5ZDkyZWM4XzM1NzM_05b8224d-bb99-41f2-a17f-a33524ae3e41">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Investment securities classified as available-for-sale consisted of the following at December&#160;31, 2020 and 2019 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.565%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.568%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.440%"/&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="21" 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, 2020&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="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;Amortized Cost&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;Gross Unrealized Gains&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;Gross Unrealized Losses&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;Estimated Fair Value&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;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:10pt;font-weight:400;line-height:100%"&gt;Agency securities&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;17,104&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;29&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(1)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;17,132&#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;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:10pt;font-weight:400;line-height:100%"&gt;Treasury 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:10pt;font-weight:400;line-height:100%"&gt;17,847&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;47&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;17,894&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Total available-for-sale investment securities&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 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;$&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:10pt;font-weight:400;line-height:100%"&gt;34,951&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;76&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(1)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;35,026&#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:23pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.565%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.568%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.440%"/&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="21" 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, 2019&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="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;Amortized Cost&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;Gross Unrealized Gains&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;Gross Unrealized Losses&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;Estimated Fair Value&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:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;9,597&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;18&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(1)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;9,614&#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:10pt;font-weight:400;line-height:100%"&gt;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:10pt;font-weight:400;line-height:100%"&gt;11,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:10pt;font-weight:400;line-height:100%"&gt;17&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;11,118&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Treasury 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:10pt;font-weight:400;line-height:100%"&gt;14,222&#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:10pt;font-weight:400;line-height:100%"&gt;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;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:10pt;font-weight:400;line-height:100%"&gt;(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;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:10pt;font-weight:400;line-height:100%"&gt;14,233&#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:10pt;font-weight:400;line-height:100%"&gt;Total available-for-sale investment securities&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 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;$&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:10pt;font-weight:400;line-height:100%"&gt;34,920&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;47&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(2)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;34,965&#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:ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i78b6030868ae4c7d94cfbca83d304d2d_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTozMzg2YTA4MTU5OTM0ZjVkYjJkNGEzZWRmYzUxYjEzYy90YWJsZXJhbmdlOjMzODZhMDgxNTk5MzRmNWRiMmQ0YTNlZGZjNTFiMTNjXzMtMS0xLTEtMA_46cdb534-761e-4330-b7b7-9041ea8cc535"
      unitRef="usd">17104000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i78b6030868ae4c7d94cfbca83d304d2d_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTozMzg2YTA4MTU5OTM0ZjVkYjJkNGEzZWRmYzUxYjEzYy90YWJsZXJhbmdlOjMzODZhMDgxNTk5MzRmNWRiMmQ0YTNlZGZjNTFiMTNjXzMtMy0xLTEtMA_2a4aea00-3d86-4e15-a9e2-2a681a229d31"
      unitRef="usd">29000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i78b6030868ae4c7d94cfbca83d304d2d_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTozMzg2YTA4MTU5OTM0ZjVkYjJkNGEzZWRmYzUxYjEzYy90YWJsZXJhbmdlOjMzODZhMDgxNTk5MzRmNWRiMmQ0YTNlZGZjNTFiMTNjXzMtNS0xLTEtMA_8039c8e7-f8ce-41a5-b8ac-801ab1c0edc1"
      unitRef="usd">1000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i78b6030868ae4c7d94cfbca83d304d2d_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTozMzg2YTA4MTU5OTM0ZjVkYjJkNGEzZWRmYzUxYjEzYy90YWJsZXJhbmdlOjMzODZhMDgxNTk5MzRmNWRiMmQ0YTNlZGZjNTFiMTNjXzMtNy0xLTEtMA_f89e5d36-86db-4cd7-bfde-5d70658e8f26"
      unitRef="usd">17132000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i8cf289ac68fb426db15e6292cf385cfb_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTozMzg2YTA4MTU5OTM0ZjVkYjJkNGEzZWRmYzUxYjEzYy90YWJsZXJhbmdlOjMzODZhMDgxNTk5MzRmNWRiMmQ0YTNlZGZjNTFiMTNjXzUtMS0xLTEtMA_13cc709b-4e08-4dfb-a66f-d23afe33e3d4"
      unitRef="usd">17847000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i8cf289ac68fb426db15e6292cf385cfb_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTozMzg2YTA4MTU5OTM0ZjVkYjJkNGEzZWRmYzUxYjEzYy90YWJsZXJhbmdlOjMzODZhMDgxNTk5MzRmNWRiMmQ0YTNlZGZjNTFiMTNjXzUtMy0xLTEtMA_e7f67e1a-ef27-47a7-a0d6-1a26a0583f73"
      unitRef="usd">47000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i8cf289ac68fb426db15e6292cf385cfb_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTozMzg2YTA4MTU5OTM0ZjVkYjJkNGEzZWRmYzUxYjEzYy90YWJsZXJhbmdlOjMzODZhMDgxNTk5MzRmNWRiMmQ0YTNlZGZjNTFiMTNjXzUtNS0xLTEtMA_d8da7472-0eff-46a9-ac0c-890ceb5058a6"
      unitRef="usd">0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i8cf289ac68fb426db15e6292cf385cfb_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTozMzg2YTA4MTU5OTM0ZjVkYjJkNGEzZWRmYzUxYjEzYy90YWJsZXJhbmdlOjMzODZhMDgxNTk5MzRmNWRiMmQ0YTNlZGZjNTFiMTNjXzUtNy0xLTEtMA_4c759fa6-4dc5-4213-83a7-06bbb23f3e8e"
      unitRef="usd">17894000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTozMzg2YTA4MTU5OTM0ZjVkYjJkNGEzZWRmYzUxYjEzYy90YWJsZXJhbmdlOjMzODZhMDgxNTk5MzRmNWRiMmQ0YTNlZGZjNTFiMTNjXzYtMS0xLTEtMA_bd0f5f99-4a5f-4cbe-b2a9-cf3b4ce4d107"
      unitRef="usd">34951000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTozMzg2YTA4MTU5OTM0ZjVkYjJkNGEzZWRmYzUxYjEzYy90YWJsZXJhbmdlOjMzODZhMDgxNTk5MzRmNWRiMmQ0YTNlZGZjNTFiMTNjXzYtMy0xLTEtMA_4761ce93-2861-4749-a98d-11e49f485cf5"
      unitRef="usd">76000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTozMzg2YTA4MTU5OTM0ZjVkYjJkNGEzZWRmYzUxYjEzYy90YWJsZXJhbmdlOjMzODZhMDgxNTk5MzRmNWRiMmQ0YTNlZGZjNTFiMTNjXzYtNS0xLTEtMA_e09a1f5c-da9b-4473-973b-bf86e9856b99"
      unitRef="usd">1000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTozMzg2YTA4MTU5OTM0ZjVkYjJkNGEzZWRmYzUxYjEzYy90YWJsZXJhbmdlOjMzODZhMDgxNTk5MzRmNWRiMmQ0YTNlZGZjNTFiMTNjXzYtNy0xLTEtMA_91d986ea-bf33-4668-8e74-cc5cc600537f"
      unitRef="usd">35026000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i48dbca9878c24d70b873012d65fa2a24_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphYjg0MGI5MGFkODc0Yzc5OGY4ZjQ5MzlkNzUxNzVkYy90YWJsZXJhbmdlOmFiODQwYjkwYWQ4NzRjNzk4ZjhmNDkzOWQ3NTE3NWRjXzItMS0xLTEtMA_bb4abbf0-143f-4a76-8f59-c8e5cfefacab"
      unitRef="usd">9597000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i48dbca9878c24d70b873012d65fa2a24_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphYjg0MGI5MGFkODc0Yzc5OGY4ZjQ5MzlkNzUxNzVkYy90YWJsZXJhbmdlOmFiODQwYjkwYWQ4NzRjNzk4ZjhmNDkzOWQ3NTE3NWRjXzItMy0xLTEtMA_f03745fd-cc6c-4ed2-940f-6ec5c4a2852c"
      unitRef="usd">18000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i48dbca9878c24d70b873012d65fa2a24_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphYjg0MGI5MGFkODc0Yzc5OGY4ZjQ5MzlkNzUxNzVkYy90YWJsZXJhbmdlOmFiODQwYjkwYWQ4NzRjNzk4ZjhmNDkzOWQ3NTE3NWRjXzItNS0xLTEtMA_d552be53-2bd6-4f7e-8f06-4df748a76ec9"
      unitRef="usd">1000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i48dbca9878c24d70b873012d65fa2a24_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphYjg0MGI5MGFkODc0Yzc5OGY4ZjQ5MzlkNzUxNzVkYy90YWJsZXJhbmdlOmFiODQwYjkwYWQ4NzRjNzk4ZjhmNDkzOWQ3NTE3NWRjXzItNy0xLTEtMA_20689a00-e515-4a47-8961-1314b2f3820a"
      unitRef="usd">9614000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i6f51dcdbd6204647b6c985d4fd00579b_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphYjg0MGI5MGFkODc0Yzc5OGY4ZjQ5MzlkNzUxNzVkYy90YWJsZXJhbmdlOmFiODQwYjkwYWQ4NzRjNzk4ZjhmNDkzOWQ3NTE3NWRjXzMtMS0xLTEtMA_efc1a045-4783-4d22-b788-d4890052d1f3"
      unitRef="usd">11101000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i6f51dcdbd6204647b6c985d4fd00579b_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphYjg0MGI5MGFkODc0Yzc5OGY4ZjQ5MzlkNzUxNzVkYy90YWJsZXJhbmdlOmFiODQwYjkwYWQ4NzRjNzk4ZjhmNDkzOWQ3NTE3NWRjXzMtMy0xLTEtMA_3a9f78d3-4a0f-4ce8-bbc1-9f0b0f3bab01"
      unitRef="usd">17000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i6f51dcdbd6204647b6c985d4fd00579b_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphYjg0MGI5MGFkODc0Yzc5OGY4ZjQ5MzlkNzUxNzVkYy90YWJsZXJhbmdlOmFiODQwYjkwYWQ4NzRjNzk4ZjhmNDkzOWQ3NTE3NWRjXzMtNS0xLTEtMA_42910f81-ae52-41f5-a824-de28ec48e52f"
      unitRef="usd">0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i6f51dcdbd6204647b6c985d4fd00579b_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphYjg0MGI5MGFkODc0Yzc5OGY4ZjQ5MzlkNzUxNzVkYy90YWJsZXJhbmdlOmFiODQwYjkwYWQ4NzRjNzk4ZjhmNDkzOWQ3NTE3NWRjXzMtNy0xLTEtMA_16a0acf7-1cca-4ea0-afa7-f8b9354f39d1"
      unitRef="usd">11118000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="id7048402d3c548c4966c4b9f13de2380_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphYjg0MGI5MGFkODc0Yzc5OGY4ZjQ5MzlkNzUxNzVkYy90YWJsZXJhbmdlOmFiODQwYjkwYWQ4NzRjNzk4ZjhmNDkzOWQ3NTE3NWRjXzQtMS0xLTEtMA_ecbd43b9-dc4f-4782-b215-374c2a98d9ec"
      unitRef="usd">14222000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="id7048402d3c548c4966c4b9f13de2380_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphYjg0MGI5MGFkODc0Yzc5OGY4ZjQ5MzlkNzUxNzVkYy90YWJsZXJhbmdlOmFiODQwYjkwYWQ4NzRjNzk4ZjhmNDkzOWQ3NTE3NWRjXzQtMy0xLTEtMA_ea8eac0c-cd24-4e53-b725-26833911f540"
      unitRef="usd">12000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="id7048402d3c548c4966c4b9f13de2380_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphYjg0MGI5MGFkODc0Yzc5OGY4ZjQ5MzlkNzUxNzVkYy90YWJsZXJhbmdlOmFiODQwYjkwYWQ4NzRjNzk4ZjhmNDkzOWQ3NTE3NWRjXzQtNS0xLTEtMA_37738d6a-ff30-45be-98df-8e0cc6535c2d"
      unitRef="usd">1000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="id7048402d3c548c4966c4b9f13de2380_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphYjg0MGI5MGFkODc0Yzc5OGY4ZjQ5MzlkNzUxNzVkYy90YWJsZXJhbmdlOmFiODQwYjkwYWQ4NzRjNzk4ZjhmNDkzOWQ3NTE3NWRjXzQtNy0xLTEtMA_cb716e10-4d83-47a8-8f0f-eed97c1bce8f"
      unitRef="usd">14233000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphYjg0MGI5MGFkODc0Yzc5OGY4ZjQ5MzlkNzUxNzVkYy90YWJsZXJhbmdlOmFiODQwYjkwYWQ4NzRjNzk4ZjhmNDkzOWQ3NTE3NWRjXzUtMS0xLTEtMA_5f1348d7-fa1a-4eef-b6d7-1134707f49a2"
      unitRef="usd">34920000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphYjg0MGI5MGFkODc0Yzc5OGY4ZjQ5MzlkNzUxNzVkYy90YWJsZXJhbmdlOmFiODQwYjkwYWQ4NzRjNzk4ZjhmNDkzOWQ3NTE3NWRjXzUtMy0xLTEtMA_5f770a2e-7d83-410f-8753-d7f87129b581"
      unitRef="usd">47000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphYjg0MGI5MGFkODc0Yzc5OGY4ZjQ5MzlkNzUxNzVkYy90YWJsZXJhbmdlOmFiODQwYjkwYWQ4NzRjNzk4ZjhmNDkzOWQ3NTE3NWRjXzUtNS0xLTEtMA_9a4d2995-97cd-4987-b976-d0ebc3198e0d"
      unitRef="usd">2000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphYjg0MGI5MGFkODc0Yzc5OGY4ZjQ5MzlkNzUxNzVkYy90YWJsZXJhbmdlOmFiODQwYjkwYWQ4NzRjNzk4ZjhmNDkzOWQ3NTE3NWRjXzUtNy0xLTEtMA_ca217e61-146f-4a5d-931c-6dabe02a7803"
      unitRef="usd">34965000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90ZXh0cmVnaW9uOmRhMjMxODYxNjY3ZTRhMzc4OWU5Zjk2YWY5ZDkyZWM4XzM1NTk_b2d1b1f6-49dc-49b6-8079-d189523cb9bc">&lt;div style="margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;At December&#160;31, 2020 and 2019, the contractual maturities of our investments did not exceed&#160;36 months. The fair values of available-for-sale investments, by remaining contractual maturity, are as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:23pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.565%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.131%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.964%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.440%"/&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="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, 2020&lt;/span&gt;&lt;/td&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, 2019&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="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;Amortized Cost&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;Estimated Fair Value&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;Amortized Cost&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;Estimated Fair Value&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:10pt;font-weight:400;line-height:100%"&gt;Due in one year or less&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;28,197&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;28,256&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;22,846&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;22,876&#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:10pt;font-weight:400;line-height:100%"&gt;Due after one year through three years&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:10pt;font-weight:400;line-height:100%"&gt;6,754&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;6,770&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;12,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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;12,089&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Total available-for-sale investment securities&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 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;$&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:10pt;font-weight:400;line-height:100%"&gt;34,951&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;35,026&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;34,920&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;34,965&#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:InvestmentsClassifiedByContractualMaturityDateTableTextBlock>
    <appf:AvailableForSaleSecuritiesMaximumContractualMaturity
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90ZXh0cmVnaW9uOmRhMjMxODYxNjY3ZTRhMzc4OWU5Zjk2YWY5ZDkyZWM4XzY4MQ_5320cff7-f360-47fa-9c82-561403d9e94f">P36M</appf:AvailableForSaleSecuritiesMaximumContractualMaturity>
    <appf:AvailableForSaleSecuritiesMaximumContractualMaturity
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90ZXh0cmVnaW9uOmRhMjMxODYxNjY3ZTRhMzc4OWU5Zjk2YWY5ZDkyZWM4XzY4MQ_9e0d3dd1-a971-4f5c-8b42-f9f0f7fb5096">P36M</appf:AvailableForSaleSecuritiesMaximumContractualMaturity>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearAmortizedCost
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo1MmU2YzE4MDIyOWQ0Y2Y1ODg2ZTkwZDZhNDY5NzYxNS90YWJsZXJhbmdlOjUyZTZjMTgwMjI5ZDRjZjU4ODZlOTBkNmE0Njk3NjE1XzItMS0xLTEtMA_a7c19df3-6ad6-4b3d-8825-69e95d1802c5"
      unitRef="usd">28197000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearAmortizedCost>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo1MmU2YzE4MDIyOWQ0Y2Y1ODg2ZTkwZDZhNDY5NzYxNS90YWJsZXJhbmdlOjUyZTZjMTgwMjI5ZDRjZjU4ODZlOTBkNmE0Njk3NjE1XzItMy0xLTEtMA_f8ebed9b-d812-4d21-ba9e-91a514677360"
      unitRef="usd">28256000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearAmortizedCost
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo1MmU2YzE4MDIyOWQ0Y2Y1ODg2ZTkwZDZhNDY5NzYxNS90YWJsZXJhbmdlOjUyZTZjMTgwMjI5ZDRjZjU4ODZlOTBkNmE0Njk3NjE1XzItNS0xLTEtMA_7c4b4704-c35d-4668-9015-09c148391a53"
      unitRef="usd">22846000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearAmortizedCost>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo1MmU2YzE4MDIyOWQ0Y2Y1ODg2ZTkwZDZhNDY5NzYxNS90YWJsZXJhbmdlOjUyZTZjMTgwMjI5ZDRjZjU4ODZlOTBkNmE0Njk3NjE1XzItNy0xLTEtMA_070c8be8-e811-439c-864d-686f7ded8569"
      unitRef="usd">22876000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesAfterOneThroughFiveYearsAmortizedCost
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo1MmU2YzE4MDIyOWQ0Y2Y1ODg2ZTkwZDZhNDY5NzYxNS90YWJsZXJhbmdlOjUyZTZjMTgwMjI5ZDRjZjU4ODZlOTBkNmE0Njk3NjE1XzMtMS0xLTEtMA_4f082ebd-25fb-404c-a851-658b2a26fb66"
      unitRef="usd">6754000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesAfterOneThroughFiveYearsAmortizedCost>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesAfterOneThroughFiveYearsFairValue
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo1MmU2YzE4MDIyOWQ0Y2Y1ODg2ZTkwZDZhNDY5NzYxNS90YWJsZXJhbmdlOjUyZTZjMTgwMjI5ZDRjZjU4ODZlOTBkNmE0Njk3NjE1XzMtMy0xLTEtMA_d4bc1567-6dcc-474d-8a5e-3135c82a8a4d"
      unitRef="usd">6770000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesAfterOneThroughFiveYearsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesAfterOneThroughFiveYearsAmortizedCost
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo1MmU2YzE4MDIyOWQ0Y2Y1ODg2ZTkwZDZhNDY5NzYxNS90YWJsZXJhbmdlOjUyZTZjMTgwMjI5ZDRjZjU4ODZlOTBkNmE0Njk3NjE1XzMtNS0xLTEtMA_b2d08572-1c2d-450e-9feb-06d4cfb4e566"
      unitRef="usd">12074000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesAfterOneThroughFiveYearsAmortizedCost>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesAfterOneThroughFiveYearsFairValue
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo1MmU2YzE4MDIyOWQ0Y2Y1ODg2ZTkwZDZhNDY5NzYxNS90YWJsZXJhbmdlOjUyZTZjMTgwMjI5ZDRjZjU4ODZlOTBkNmE0Njk3NjE1XzMtNy0xLTEtMA_f0075045-fe0e-4e25-96da-fb87e640c5d1"
      unitRef="usd">12089000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesAfterOneThroughFiveYearsFairValue>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo1MmU2YzE4MDIyOWQ0Y2Y1ODg2ZTkwZDZhNDY5NzYxNS90YWJsZXJhbmdlOjUyZTZjMTgwMjI5ZDRjZjU4ODZlOTBkNmE0Njk3NjE1XzQtMS0xLTEtMA_2526f93d-2ae0-4b19-9ae2-97945829f527"
      unitRef="usd">34951000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo1MmU2YzE4MDIyOWQ0Y2Y1ODg2ZTkwZDZhNDY5NzYxNS90YWJsZXJhbmdlOjUyZTZjMTgwMjI5ZDRjZjU4ODZlOTBkNmE0Njk3NjE1XzQtMy0xLTEtMA_c365a1f2-0d51-460d-8fce-4fc4665d6a4d"
      unitRef="usd">35026000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo1MmU2YzE4MDIyOWQ0Y2Y1ODg2ZTkwZDZhNDY5NzYxNS90YWJsZXJhbmdlOjUyZTZjMTgwMjI5ZDRjZjU4ODZlOTBkNmE0Njk3NjE1XzQtNS0xLTEtMA_3f342ecd-40e3-4032-a317-172d9942c28e"
      unitRef="usd">34920000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo1MmU2YzE4MDIyOWQ0Y2Y1ODg2ZTkwZDZhNDY5NzYxNS90YWJsZXJhbmdlOjUyZTZjMTgwMjI5ZDRjZjU4ODZlOTBkNmE0Njk3NjE1XzQtNy0xLTEtMA_78748acd-ba88-4043-8fb0-359b631972c0"
      unitRef="usd">34965000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:ScheduleOfRealizedGainLossTableTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90ZXh0cmVnaW9uOmRhMjMxODYxNjY3ZTRhMzc4OWU5Zjk2YWY5ZDkyZWM4XzM1NDc_c27619dd-4988-43a5-94d9-269951ad7c50">&lt;div style="margin-bottom:6pt;margin-top:12pt;text-indent:36pt"&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, 2020 and 2019, we had sales and maturities (which include calls) of investment securities, as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:23pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.565%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.568%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.440%"/&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="21" 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;Year Ended December 31, 2020&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="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;Gross Realized Gains&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;Gross Realized Losses&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;Gross Proceeds from Sales &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;Gross Proceeds from Maturities&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:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;6&#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:10pt;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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,006&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;5,600&#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:10pt;font-weight:400;line-height:100%"&gt;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:10pt;font-weight:400;line-height:100%"&gt;25&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;7,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:10pt;font-weight:400;line-height:100%"&gt;1,900&#160;&lt;/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;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:10pt;font-weight:400;line-height:100%"&gt;Treasury 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:10pt;font-weight:400;line-height:100%"&gt;4&#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:10pt;font-weight:400;line-height:100%"&gt;(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:10pt;font-weight:400;line-height:100%"&gt;4,827&#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:10pt;font-weight:400;line-height:100%"&gt;19,830&#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 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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;35&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(2)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;16,711&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;27,330&#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;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:98.840%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.155%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.536%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.536%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.536%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.538%"/&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="21" 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;Year Ended December 31, 2019&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="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;Gross Realized Gains&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;Gross Realized Losses&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;Gross Proceeds from Sales&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;Gross Proceeds from Maturities&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:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&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:10pt;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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(1)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;2,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;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;11,350&#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:10pt;font-weight:400;line-height:100%"&gt;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:10pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;3,625&#160;&lt;/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;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:10pt;font-weight:400;line-height:100%"&gt;Treasury 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:10pt;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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;685&#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;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:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;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:10pt;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: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:10pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;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="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;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:10pt;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: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:10pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;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="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;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:10pt;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: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:10pt;font-weight:400;line-height:100%"&gt;2,750&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;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="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;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:10pt;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: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:10pt;font-weight:400;line-height:100%"&gt;15,660&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;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:ScheduleOfRealizedGainLossTableTextBlock>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGain
      contextRef="icbfe841fc9d24061ab763d5812f194de_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZDc5ODQzZTI2ZDk0NWNmOWZhZWRkZTgzZTI4M2E1NC90YWJsZXJhbmdlOjhkNzk4NDNlMjZkOTQ1Y2Y5ZmFlZGRlODNlMjgzYTU0XzItMS0xLTEtMA_cacf4c6b-30aa-4865-ab9f-503d9849e629"
      unitRef="usd">6000</us-gaap:DebtSecuritiesAvailableForSaleRealizedGain>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss
      contextRef="icbfe841fc9d24061ab763d5812f194de_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZDc5ODQzZTI2ZDk0NWNmOWZhZWRkZTgzZTI4M2E1NC90YWJsZXJhbmdlOjhkNzk4NDNlMjZkOTQ1Y2Y5ZmFlZGRlODNlMjgzYTU0XzItMy0xLTEtMA_d3d0d1ac-259a-4ec9-9cae-a797e9bea7d9"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss>
    <us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt
      contextRef="icbfe841fc9d24061ab763d5812f194de_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZDc5ODQzZTI2ZDk0NWNmOWZhZWRkZTgzZTI4M2E1NC90YWJsZXJhbmdlOjhkNzk4NDNlMjZkOTQ1Y2Y5ZmFlZGRlODNlMjgzYTU0XzItNS0xLTEtMA_14cafe91-2581-4151-87da-eb6e107c86a3"
      unitRef="usd">4006000</us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="icbfe841fc9d24061ab763d5812f194de_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZDc5ODQzZTI2ZDk0NWNmOWZhZWRkZTgzZTI4M2E1NC90YWJsZXJhbmdlOjhkNzk4NDNlMjZkOTQ1Y2Y5ZmFlZGRlODNlMjgzYTU0XzItNy0xLTEtMA_78de085e-1bd8-4368-b0d4-c99752cc4809"
      unitRef="usd">5600000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGain
      contextRef="i66a55d91487a4d5a969d369fe0ceabff_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZDc5ODQzZTI2ZDk0NWNmOWZhZWRkZTgzZTI4M2E1NC90YWJsZXJhbmdlOjhkNzk4NDNlMjZkOTQ1Y2Y5ZmFlZGRlODNlMjgzYTU0XzMtMS0xLTEtMA_e690a17d-4d79-40c1-b985-a04de28f3f47"
      unitRef="usd">25000</us-gaap:DebtSecuritiesAvailableForSaleRealizedGain>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss
      contextRef="i66a55d91487a4d5a969d369fe0ceabff_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZDc5ODQzZTI2ZDk0NWNmOWZhZWRkZTgzZTI4M2E1NC90YWJsZXJhbmdlOjhkNzk4NDNlMjZkOTQ1Y2Y5ZmFlZGRlODNlMjgzYTU0XzMtMy0xLTEtMA_0c20d9e1-e0ef-4c2c-9cad-02b2c34d3062"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss>
    <us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt
      contextRef="i66a55d91487a4d5a969d369fe0ceabff_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZDc5ODQzZTI2ZDk0NWNmOWZhZWRkZTgzZTI4M2E1NC90YWJsZXJhbmdlOjhkNzk4NDNlMjZkOTQ1Y2Y5ZmFlZGRlODNlMjgzYTU0XzMtNS0xLTEtMA_7f125cf5-2c53-47c8-860d-dff6d1577c22"
      unitRef="usd">7878000</us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="i66a55d91487a4d5a969d369fe0ceabff_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZDc5ODQzZTI2ZDk0NWNmOWZhZWRkZTgzZTI4M2E1NC90YWJsZXJhbmdlOjhkNzk4NDNlMjZkOTQ1Y2Y5ZmFlZGRlODNlMjgzYTU0XzMtNy0xLTEtMA_c3824b5b-b1a8-4c92-8191-46054d510588"
      unitRef="usd">1900000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGain
      contextRef="i063bf61a1c614c57881281e9237e7cc7_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZDc5ODQzZTI2ZDk0NWNmOWZhZWRkZTgzZTI4M2E1NC90YWJsZXJhbmdlOjhkNzk4NDNlMjZkOTQ1Y2Y5ZmFlZGRlODNlMjgzYTU0XzUtMS0xLTEtMA_62bd0efb-23cc-449b-a1bd-8b3d1edccb01"
      unitRef="usd">4000</us-gaap:DebtSecuritiesAvailableForSaleRealizedGain>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss
      contextRef="i063bf61a1c614c57881281e9237e7cc7_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZDc5ODQzZTI2ZDk0NWNmOWZhZWRkZTgzZTI4M2E1NC90YWJsZXJhbmdlOjhkNzk4NDNlMjZkOTQ1Y2Y5ZmFlZGRlODNlMjgzYTU0XzUtMy0xLTEtMA_20378055-cfa3-432c-8c39-cc2b6b38d7e0"
      unitRef="usd">2000</us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss>
    <us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt
      contextRef="i063bf61a1c614c57881281e9237e7cc7_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZDc5ODQzZTI2ZDk0NWNmOWZhZWRkZTgzZTI4M2E1NC90YWJsZXJhbmdlOjhkNzk4NDNlMjZkOTQ1Y2Y5ZmFlZGRlODNlMjgzYTU0XzUtNS0xLTEtMA_8d9ef0ca-7ed9-4964-8552-edadfd6bb1fe"
      unitRef="usd">4827000</us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="i063bf61a1c614c57881281e9237e7cc7_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZDc5ODQzZTI2ZDk0NWNmOWZhZWRkZTgzZTI4M2E1NC90YWJsZXJhbmdlOjhkNzk4NDNlMjZkOTQ1Y2Y5ZmFlZGRlODNlMjgzYTU0XzUtNy0xLTEtMA_7a3b8583-7c4b-4aa5-a274-01783e97534d"
      unitRef="usd">19830000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGain
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZDc5ODQzZTI2ZDk0NWNmOWZhZWRkZTgzZTI4M2E1NC90YWJsZXJhbmdlOjhkNzk4NDNlMjZkOTQ1Y2Y5ZmFlZGRlODNlMjgzYTU0XzYtMS0xLTEtMA_4927883c-4c7d-4a3f-83ae-4df145e11269"
      unitRef="usd">35000</us-gaap:DebtSecuritiesAvailableForSaleRealizedGain>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZDc5ODQzZTI2ZDk0NWNmOWZhZWRkZTgzZTI4M2E1NC90YWJsZXJhbmdlOjhkNzk4NDNlMjZkOTQ1Y2Y5ZmFlZGRlODNlMjgzYTU0XzYtMy0xLTEtMA_1837c8f2-587d-4fd4-968a-2d34e7df2edf"
      unitRef="usd">2000</us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss>
    <us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZDc5ODQzZTI2ZDk0NWNmOWZhZWRkZTgzZTI4M2E1NC90YWJsZXJhbmdlOjhkNzk4NDNlMjZkOTQ1Y2Y5ZmFlZGRlODNlMjgzYTU0XzYtNS0xLTEtMA_86e5c4df-9f21-4409-90ba-b745cab3c2a3"
      unitRef="usd">16711000</us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZDc5ODQzZTI2ZDk0NWNmOWZhZWRkZTgzZTI4M2E1NC90YWJsZXJhbmdlOjhkNzk4NDNlMjZkOTQ1Y2Y5ZmFlZGRlODNlMjgzYTU0XzYtNy0xLTEtMA_bafc58f1-56c9-43d2-92c5-78bba67cadac"
      unitRef="usd">27330000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGain
      contextRef="iebc4c45ba805479a827d635e1b70430d_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZmQ3OGQxYjI3YzE0NGJlODYwNmIzNGI5MzZmNzkzMS90YWJsZXJhbmdlOjhmZDc4ZDFiMjdjMTQ0YmU4NjA2YjM0YjkzNmY3OTMxXzItMS0xLTEtMA_c4abec8d-c054-4030-9126-38ecac724f42"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleRealizedGain>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss
      contextRef="iebc4c45ba805479a827d635e1b70430d_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZmQ3OGQxYjI3YzE0NGJlODYwNmIzNGI5MzZmNzkzMS90YWJsZXJhbmdlOjhmZDc4ZDFiMjdjMTQ0YmU4NjA2YjM0YjkzNmY3OTMxXzItMy0xLTEtMA_b3ac0e7b-dcea-4000-91ba-438fd848db49"
      unitRef="usd">1000</us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss>
    <us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt
      contextRef="iebc4c45ba805479a827d635e1b70430d_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZmQ3OGQxYjI3YzE0NGJlODYwNmIzNGI5MzZmNzkzMS90YWJsZXJhbmdlOjhmZDc4ZDFiMjdjMTQ0YmU4NjA2YjM0YjkzNmY3OTMxXzItNS0xLTEtMA_089e37b3-4985-401f-bf8f-8172a5e5f3a1"
      unitRef="usd">2750000</us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="iebc4c45ba805479a827d635e1b70430d_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZmQ3OGQxYjI3YzE0NGJlODYwNmIzNGI5MzZmNzkzMS90YWJsZXJhbmdlOjhmZDc4ZDFiMjdjMTQ0YmU4NjA2YjM0YjkzNmY3OTMxXzItNy0xLTEtMA_535caa84-4429-486e-b189-a978a7d35015"
      unitRef="usd">11350000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGain
      contextRef="i58fd03d6e4b044e5a362dfb44b2a3f33_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZmQ3OGQxYjI3YzE0NGJlODYwNmIzNGI5MzZmNzkzMS90YWJsZXJhbmdlOjhmZDc4ZDFiMjdjMTQ0YmU4NjA2YjM0YjkzNmY3OTMxXzMtMS0xLTEtMA_f814d7b7-6a72-48f5-ae88-90e78610fa95"
      unitRef="usd">6000</us-gaap:DebtSecuritiesAvailableForSaleRealizedGain>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss
      contextRef="i58fd03d6e4b044e5a362dfb44b2a3f33_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZmQ3OGQxYjI3YzE0NGJlODYwNmIzNGI5MzZmNzkzMS90YWJsZXJhbmdlOjhmZDc4ZDFiMjdjMTQ0YmU4NjA2YjM0YjkzNmY3OTMxXzMtMy0xLTEtMA_3c087d06-d280-41a0-ba8c-ac1befb6b6e5"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss>
    <us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt
      contextRef="i58fd03d6e4b044e5a362dfb44b2a3f33_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZmQ3OGQxYjI3YzE0NGJlODYwNmIzNGI5MzZmNzkzMS90YWJsZXJhbmdlOjhmZDc4ZDFiMjdjMTQ0YmU4NjA2YjM0YjkzNmY3OTMxXzMtNS0xLTEtMA_8c93d6ea-bc41-4ef6-81d4-0c02b518017b"
      unitRef="usd">0</us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="i58fd03d6e4b044e5a362dfb44b2a3f33_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZmQ3OGQxYjI3YzE0NGJlODYwNmIzNGI5MzZmNzkzMS90YWJsZXJhbmdlOjhmZDc4ZDFiMjdjMTQ0YmU4NjA2YjM0YjkzNmY3OTMxXzMtNy0xLTEtMA_e289e592-bbe8-416a-b892-3859c4b31054"
      unitRef="usd">3625000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGain
      contextRef="ie0e6a29b38094c8791d030fbe4ce319c_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZmQ3OGQxYjI3YzE0NGJlODYwNmIzNGI5MzZmNzkzMS90YWJsZXJhbmdlOjhmZDc4ZDFiMjdjMTQ0YmU4NjA2YjM0YjkzNmY3OTMxXzUtMS0xLTEtMA_7f49bfc9-41a3-4c9b-854b-9912c016ebf4"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleRealizedGain>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss
      contextRef="ie0e6a29b38094c8791d030fbe4ce319c_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZmQ3OGQxYjI3YzE0NGJlODYwNmIzNGI5MzZmNzkzMS90YWJsZXJhbmdlOjhmZDc4ZDFiMjdjMTQ0YmU4NjA2YjM0YjkzNmY3OTMxXzUtMy0xLTEtMA_08783b94-e106-4e17-99a7-d223c2941441"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss>
    <us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt
      contextRef="ie0e6a29b38094c8791d030fbe4ce319c_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZmQ3OGQxYjI3YzE0NGJlODYwNmIzNGI5MzZmNzkzMS90YWJsZXJhbmdlOjhmZDc4ZDFiMjdjMTQ0YmU4NjA2YjM0YjkzNmY3OTMxXzUtNS0xLTEtMA_00423da1-4e1d-4b50-b40c-635bbd2e5578"
      unitRef="usd">0</us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="ie0e6a29b38094c8791d030fbe4ce319c_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZmQ3OGQxYjI3YzE0NGJlODYwNmIzNGI5MzZmNzkzMS90YWJsZXJhbmdlOjhmZDc4ZDFiMjdjMTQ0YmU4NjA2YjM0YjkzNmY3OTMxXzUtNy0xLTEtMA_a382852b-41ad-4095-84a7-2a43f74fa71d"
      unitRef="usd">685000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGain
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZmQ3OGQxYjI3YzE0NGJlODYwNmIzNGI5MzZmNzkzMS90YWJsZXJhbmdlOjhmZDc4ZDFiMjdjMTQ0YmU4NjA2YjM0YjkzNmY3OTMxXzctMS0xLTEtMA_a7d18c01-3684-4093-860f-b01146c98f1f"
      unitRef="usd">6000</us-gaap:DebtSecuritiesAvailableForSaleRealizedGain>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZmQ3OGQxYjI3YzE0NGJlODYwNmIzNGI5MzZmNzkzMS90YWJsZXJhbmdlOjhmZDc4ZDFiMjdjMTQ0YmU4NjA2YjM0YjkzNmY3OTMxXzctMy0xLTEtMA_3355fb32-dc1e-47d3-9ca5-b9d9c45aa86b"
      unitRef="usd">1000</us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss>
    <us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZmQ3OGQxYjI3YzE0NGJlODYwNmIzNGI5MzZmNzkzMS90YWJsZXJhbmdlOjhmZDc4ZDFiMjdjMTQ0YmU4NjA2YjM0YjkzNmY3OTMxXzctNS0xLTEtMA_3b048724-97d3-4c5f-b9b2-7f0c60094005"
      unitRef="usd">2750000</us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTo4ZmQ3OGQxYjI3YzE0NGJlODYwNmIzNGI5MzZmNzkzMS90YWJsZXJhbmdlOjhmZDc4ZDFiMjdjMTQ0YmU4NjA2YjM0YjkzNmY3OTMxXzctNy0xLTEtMA_b05f26f2-d01c-40cb-91d7-92539727a681"
      unitRef="usd">15660000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90ZXh0cmVnaW9uOmRhMjMxODYxNjY3ZTRhMzc4OWU5Zjk2YWY5ZDkyZWM4XzEwNzk_de0f851a-8231-4291-92ae-6788acbfca9b"
      unitRef="usd">300000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90ZXh0cmVnaW9uOmRhMjMxODYxNjY3ZTRhMzc4OWU5Zjk2YWY5ZDkyZWM4XzEwODM_6d6cb78c-652e-4a26-8d58-a21f85212f82"
      unitRef="usd">600000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90ZXh0cmVnaW9uOmRhMjMxODYxNjY3ZTRhMzc4OWU5Zjk2YWY5ZDkyZWM4XzEwOTE_30d02764-8e18-4a30-8221-e1fad35210c5"
      unitRef="usd">1000000.0</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90ZXh0cmVnaW9uOmRhMjMxODYxNjY3ZTRhMzc4OWU5Zjk2YWY5ZDkyZWM4XzM1NDU_5211d560-b6fb-48d9-9835-cb524b2c3b50">The following tables present our financial assets and liabilities measured at fair value on a recurring basis at December&#160;31, 2020 and 2019, by level within the fair value hierarchy (in thousands):&lt;div style="margin-bottom:5pt;margin-top:17pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.565%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.568%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.440%"/&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:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="21" 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, 2020&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: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;Level&#160;1&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;Level&#160;2&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;Level 3&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;Total&#160;Fair&lt;br/&gt;Value&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:10pt;font-weight:400;line-height:100%"&gt;Cash equivalents:&lt;/span&gt;&lt;/td&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 7.75pt;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;Money market funds&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,749&#160;&lt;/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:10pt;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:10pt;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:10pt;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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,749&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Treasury 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:10pt;font-weight:400;line-height:100%"&gt;97,433&#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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;97,433&#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:10pt;font-weight:400;line-height:100%"&gt;Available-for-sale investment securities:&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;/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;/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:10pt;font-weight:400;line-height:100%"&gt;Agency 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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;17,132&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;17,132&#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;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:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;Treasury 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:10pt;font-weight:400;line-height:100%"&gt;17,894&#160;&lt;/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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;17,894&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Total&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 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;$&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:10pt;font-weight:400;line-height:100%"&gt;120,076&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;17,132&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;137,208&#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:12pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.565%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.568%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.440%"/&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="21" 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, 2019&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="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;Level&#160;1&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;Level&#160;2&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;Level 3&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;Total&#160;Fair&lt;br/&gt;Value&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:10pt;font-weight:400;line-height:100%"&gt;Cash equivalents:&lt;/span&gt;&lt;/td&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 7.75pt;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;Money market funds&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;337&#160;&lt;/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:10pt;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:10pt;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:10pt;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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;337&#160;&lt;/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;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:10pt;font-weight:400;line-height:100%"&gt;Available-for-sale investment 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;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 7.75pt;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;Corporate bonds&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;9,614&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;9,614&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Agency 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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;11,118&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;11,118&#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;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 7.75pt;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;Treasury 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:10pt;font-weight:400;line-height:100%"&gt;14,233&#160;&lt;/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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;14,233&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;14,570&#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="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;20,732&#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="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#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="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;35,302&#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;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock>
    <us-gaap:FairValueLiabilitiesMeasuredOnRecurringBasisTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90ZXh0cmVnaW9uOmRhMjMxODYxNjY3ZTRhMzc4OWU5Zjk2YWY5ZDkyZWM4XzM1NjA_f266f421-6572-4165-ab2c-113989d83d0b">The following tables present our financial assets and liabilities measured at fair value on a recurring basis at December&#160;31, 2020 and 2019, by level within the fair value hierarchy (in thousands):&lt;div style="margin-bottom:5pt;margin-top:17pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.565%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.568%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.440%"/&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:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="21" 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, 2020&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: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;Level&#160;1&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;Level&#160;2&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;Level 3&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;Total&#160;Fair&lt;br/&gt;Value&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:10pt;font-weight:400;line-height:100%"&gt;Cash equivalents:&lt;/span&gt;&lt;/td&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 7.75pt;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;Money market funds&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,749&#160;&lt;/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:10pt;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:10pt;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:10pt;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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,749&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Treasury 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:10pt;font-weight:400;line-height:100%"&gt;97,433&#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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;97,433&#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:10pt;font-weight:400;line-height:100%"&gt;Available-for-sale investment securities:&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;/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;/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:10pt;font-weight:400;line-height:100%"&gt;Agency 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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;17,132&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;17,132&#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;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:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;Treasury 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:10pt;font-weight:400;line-height:100%"&gt;17,894&#160;&lt;/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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;17,894&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Total&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 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;$&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:10pt;font-weight:400;line-height:100%"&gt;120,076&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;17,132&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;137,208&#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:12pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.565%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.568%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.437%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.527%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.440%"/&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="21" 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, 2019&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="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;Level&#160;1&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;Level&#160;2&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;Level 3&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;Total&#160;Fair&lt;br/&gt;Value&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:10pt;font-weight:400;line-height:100%"&gt;Cash equivalents:&lt;/span&gt;&lt;/td&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 7.75pt;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;Money market funds&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;337&#160;&lt;/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:10pt;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:10pt;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:10pt;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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;337&#160;&lt;/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;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:10pt;font-weight:400;line-height:100%"&gt;Available-for-sale investment 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;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 7.75pt;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;Corporate bonds&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;9,614&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;9,614&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Agency 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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;11,118&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;11,118&#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;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 7.75pt;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;Treasury 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:10pt;font-weight:400;line-height:100%"&gt;14,233&#160;&lt;/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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;14,233&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;14,570&#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="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;20,732&#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="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#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="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;35,302&#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;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:FairValueLiabilitiesMeasuredOnRecurringBasisTextBlock>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i0ed5787f541b486d876c274976b0b95f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphNjE4Mzg3MmIzM2U0N2U5YTUwMjMxNjg4ZjA3ZjU3NC90YWJsZXJhbmdlOmE2MTgzODcyYjMzZTQ3ZTlhNTAyMzE2ODhmMDdmNTc0XzMtMS0xLTEtMA_df07821b-5510-4260-8857-60d4ce1a5d89"
      unitRef="usd">4749000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i71bd0b1d46504994a1f45f2ab19fb143_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphNjE4Mzg3MmIzM2U0N2U5YTUwMjMxNjg4ZjA3ZjU3NC90YWJsZXJhbmdlOmE2MTgzODcyYjMzZTQ3ZTlhNTAyMzE2ODhmMDdmNTc0XzMtMy0xLTEtMA_56b9e209-765a-45a3-908e-096155b18f30"
      unitRef="usd">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="ic3806ae5e6874059b5c912a6a9c6bcab_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphNjE4Mzg3MmIzM2U0N2U5YTUwMjMxNjg4ZjA3ZjU3NC90YWJsZXJhbmdlOmE2MTgzODcyYjMzZTQ3ZTlhNTAyMzE2ODhmMDdmNTc0XzMtNS0xLTEtMA_e57c1a6f-70f1-4cf5-8512-712787a0672a"
      unitRef="usd">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i97ee30ebebd647588addbc170a7a6aa8_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphNjE4Mzg3MmIzM2U0N2U5YTUwMjMxNjg4ZjA3ZjU3NC90YWJsZXJhbmdlOmE2MTgzODcyYjMzZTQ3ZTlhNTAyMzE2ODhmMDdmNTc0XzMtNy0xLTEtMA_01094f7d-6b9c-4239-af69-91a3bc931051"
      unitRef="usd">4749000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="ife7f5317c120436a8faae90027509af7_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphNjE4Mzg3MmIzM2U0N2U5YTUwMjMxNjg4ZjA3ZjU3NC90YWJsZXJhbmdlOmE2MTgzODcyYjMzZTQ3ZTlhNTAyMzE2ODhmMDdmNTc0XzQtMS0xLTEtMjQwMQ_aa8a0de6-4fea-4aa0-82e3-aeb2b5b09fed"
      unitRef="usd">97433000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="ib271ac0c1622494f948735c657ff48ef_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphNjE4Mzg3MmIzM2U0N2U5YTUwMjMxNjg4ZjA3ZjU3NC90YWJsZXJhbmdlOmE2MTgzODcyYjMzZTQ3ZTlhNTAyMzE2ODhmMDdmNTc0XzQtMy0xLTEtMjQwMQ_58f012f4-25e2-4963-bee6-754cf1ad6dff"
      unitRef="usd">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i402acf436df84b7880c2a4aa61e9d41b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphNjE4Mzg3MmIzM2U0N2U5YTUwMjMxNjg4ZjA3ZjU3NC90YWJsZXJhbmdlOmE2MTgzODcyYjMzZTQ3ZTlhNTAyMzE2ODhmMDdmNTc0XzQtNS0xLTEtMjQwMQ_c418182e-a0d9-4f39-aa0e-bb54af034aec"
      unitRef="usd">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i40b37e9adad448408a57f1b45de0087e_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphNjE4Mzg3MmIzM2U0N2U5YTUwMjMxNjg4ZjA3ZjU3NC90YWJsZXJhbmdlOmE2MTgzODcyYjMzZTQ3ZTlhNTAyMzE2ODhmMDdmNTc0XzQtNy0xLTEtMjQwMQ_25761e39-ed7c-4ed3-b3bf-393105989fa7"
      unitRef="usd">97433000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i954b5d7bfb764e6b8df91e062c4a5f48_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphNjE4Mzg3MmIzM2U0N2U5YTUwMjMxNjg4ZjA3ZjU3NC90YWJsZXJhbmdlOmE2MTgzODcyYjMzZTQ3ZTlhNTAyMzE2ODhmMDdmNTc0XzYtMS0xLTEtMA_561c7883-7363-4e3d-ab0a-d4984453157a"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i15ceb52655f34529b9889b41cc7b473f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphNjE4Mzg3MmIzM2U0N2U5YTUwMjMxNjg4ZjA3ZjU3NC90YWJsZXJhbmdlOmE2MTgzODcyYjMzZTQ3ZTlhNTAyMzE2ODhmMDdmNTc0XzYtMy0xLTEtMA_346beeab-4850-47fa-aa1d-dd205f7a7ccc"
      unitRef="usd">17132000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i2f213a81ab22426b81c14619e6dc9e1f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphNjE4Mzg3MmIzM2U0N2U5YTUwMjMxNjg4ZjA3ZjU3NC90YWJsZXJhbmdlOmE2MTgzODcyYjMzZTQ3ZTlhNTAyMzE2ODhmMDdmNTc0XzYtNS0xLTEtMA_d6261616-93d7-4dea-9385-d1e84ccde501"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i80b15b5a7f6843a7bd2b6e36ec705928_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphNjE4Mzg3MmIzM2U0N2U5YTUwMjMxNjg4ZjA3ZjU3NC90YWJsZXJhbmdlOmE2MTgzODcyYjMzZTQ3ZTlhNTAyMzE2ODhmMDdmNTc0XzYtNy0xLTEtMA_0ff18ee5-bdba-4d39-8f99-7e0a4d9bbf67"
      unitRef="usd">17132000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i3e78b1a19aec4a508dd936613ddc4ce8_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphNjE4Mzg3MmIzM2U0N2U5YTUwMjMxNjg4ZjA3ZjU3NC90YWJsZXJhbmdlOmE2MTgzODcyYjMzZTQ3ZTlhNTAyMzE2ODhmMDdmNTc0XzgtMS0xLTEtMA_5708b68d-ac34-4a32-b9b1-e37237ae3f27"
      unitRef="usd">17894000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="ie4314adc8a2740f6b240fa95a1ebae5a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphNjE4Mzg3MmIzM2U0N2U5YTUwMjMxNjg4ZjA3ZjU3NC90YWJsZXJhbmdlOmE2MTgzODcyYjMzZTQ3ZTlhNTAyMzE2ODhmMDdmNTc0XzgtMy0xLTEtMA_99402a9f-9c2d-4da7-b909-b3ad40d8a891"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i724e7781c207431fbf6dd28887c958a4_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphNjE4Mzg3MmIzM2U0N2U5YTUwMjMxNjg4ZjA3ZjU3NC90YWJsZXJhbmdlOmE2MTgzODcyYjMzZTQ3ZTlhNTAyMzE2ODhmMDdmNTc0XzgtNS0xLTEtMA_9fa5f4bb-e321-4b0f-aae7-58e725c76b40"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i1f17e7aa7d024a5e889e2c7a20010173_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphNjE4Mzg3MmIzM2U0N2U5YTUwMjMxNjg4ZjA3ZjU3NC90YWJsZXJhbmdlOmE2MTgzODcyYjMzZTQ3ZTlhNTAyMzE2ODhmMDdmNTc0XzgtNy0xLTEtMA_4f52656d-5438-4093-846a-61dcdb68d2a8"
      unitRef="usd">17894000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i6cafb0d2772f4b51801f4683cf68928f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphNjE4Mzg3MmIzM2U0N2U5YTUwMjMxNjg4ZjA3ZjU3NC90YWJsZXJhbmdlOmE2MTgzODcyYjMzZTQ3ZTlhNTAyMzE2ODhmMDdmNTc0XzktMS0xLTEtMA_5299ace3-dd4a-45c6-b8bb-10e879ad10b4"
      unitRef="usd">120076000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i3104d6b8cc81460b886135648ef108ae_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphNjE4Mzg3MmIzM2U0N2U5YTUwMjMxNjg4ZjA3ZjU3NC90YWJsZXJhbmdlOmE2MTgzODcyYjMzZTQ3ZTlhNTAyMzE2ODhmMDdmNTc0XzktMy0xLTEtMA_0856af86-7c9f-477b-a547-ccb4de0f814d"
      unitRef="usd">17132000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i45c535d20de2421f8b8c4c9f3b8f2c75_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphNjE4Mzg3MmIzM2U0N2U5YTUwMjMxNjg4ZjA3ZjU3NC90YWJsZXJhbmdlOmE2MTgzODcyYjMzZTQ3ZTlhNTAyMzE2ODhmMDdmNTc0XzktNS0xLTEtMA_73566434-00cb-488c-9737-f6b0887213ab"
      unitRef="usd">0</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i8f2082b48c6c4e60ab0d5bc5f521f3ab_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphNjE4Mzg3MmIzM2U0N2U5YTUwMjMxNjg4ZjA3ZjU3NC90YWJsZXJhbmdlOmE2MTgzODcyYjMzZTQ3ZTlhNTAyMzE2ODhmMDdmNTc0XzktNy0xLTEtMA_20f1cfd3-899a-4204-909d-a3e97e6e47c6"
      unitRef="usd">137208000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i838feed0e5de4761b737bd296a069623_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphMmViYjY1NmUxZjI0MGFkYTgzZTJmMGQyY2JkNWUyNy90YWJsZXJhbmdlOmEyZWJiNjU2ZTFmMjQwYWRhODNlMmYwZDJjYmQ1ZTI3XzMtMS0xLTEtMA_3362bfbe-abfd-46d1-bdd5-f72c066e3a8c"
      unitRef="usd">337000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i6587dce9c8104d439719029c960dcb1f_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphMmViYjY1NmUxZjI0MGFkYTgzZTJmMGQyY2JkNWUyNy90YWJsZXJhbmdlOmEyZWJiNjU2ZTFmMjQwYWRhODNlMmYwZDJjYmQ1ZTI3XzMtMy0xLTEtMA_0c620d50-1bee-4fbd-9d63-01066c9f1808"
      unitRef="usd">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="iac7a88785001472ba7c6196dbced8c27_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphMmViYjY1NmUxZjI0MGFkYTgzZTJmMGQyY2JkNWUyNy90YWJsZXJhbmdlOmEyZWJiNjU2ZTFmMjQwYWRhODNlMmYwZDJjYmQ1ZTI3XzMtNS0xLTEtMA_5ac038d8-5d66-4745-923e-928006f6bd47"
      unitRef="usd">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i58c8c2559f4c412c9aa777284b499f0f_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphMmViYjY1NmUxZjI0MGFkYTgzZTJmMGQyY2JkNWUyNy90YWJsZXJhbmdlOmEyZWJiNjU2ZTFmMjQwYWRhODNlMmYwZDJjYmQ1ZTI3XzMtNy0xLTEtMA_bd2904eb-70cd-4ac4-b64a-7d0199933927"
      unitRef="usd">337000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i205b6d6d5cb64ef38699da52825221e6_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphMmViYjY1NmUxZjI0MGFkYTgzZTJmMGQyY2JkNWUyNy90YWJsZXJhbmdlOmEyZWJiNjU2ZTFmMjQwYWRhODNlMmYwZDJjYmQ1ZTI3XzUtMS0xLTEtMA_328782e0-037a-4cc9-8d22-a19a492cfa7d"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i2bffd86069d54bde8c67ec4b9568ee3d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphMmViYjY1NmUxZjI0MGFkYTgzZTJmMGQyY2JkNWUyNy90YWJsZXJhbmdlOmEyZWJiNjU2ZTFmMjQwYWRhODNlMmYwZDJjYmQ1ZTI3XzUtMy0xLTEtMA_dedce404-2bfe-416c-9b3b-77be055c2aed"
      unitRef="usd">9614000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i24df997cf5d74e7d80367e0bffcf255f_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphMmViYjY1NmUxZjI0MGFkYTgzZTJmMGQyY2JkNWUyNy90YWJsZXJhbmdlOmEyZWJiNjU2ZTFmMjQwYWRhODNlMmYwZDJjYmQ1ZTI3XzUtNS0xLTEtMA_42f42231-2f3e-45d1-b73a-4926c42f959b"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="if0e8e8ff65f248088bfcd2ca9b7a0474_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphMmViYjY1NmUxZjI0MGFkYTgzZTJmMGQyY2JkNWUyNy90YWJsZXJhbmdlOmEyZWJiNjU2ZTFmMjQwYWRhODNlMmYwZDJjYmQ1ZTI3XzUtNy0xLTEtMA_a9e718b3-d278-40e5-a6ed-96a85dc8aed2"
      unitRef="usd">9614000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i3c8a7325a47b41f58b3c52c55e00638f_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphMmViYjY1NmUxZjI0MGFkYTgzZTJmMGQyY2JkNWUyNy90YWJsZXJhbmdlOmEyZWJiNjU2ZTFmMjQwYWRhODNlMmYwZDJjYmQ1ZTI3XzYtMS0xLTEtMA_d11f615b-ea28-4c29-aba7-1b6af586ce60"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="if89c7407c49046898c2c0c7a05a86f88_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphMmViYjY1NmUxZjI0MGFkYTgzZTJmMGQyY2JkNWUyNy90YWJsZXJhbmdlOmEyZWJiNjU2ZTFmMjQwYWRhODNlMmYwZDJjYmQ1ZTI3XzYtMy0xLTEtMA_11cfda53-e0f2-4452-a9cc-17803a3524de"
      unitRef="usd">11118000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i1cca2492bca943899611f7977e24a7bc_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphMmViYjY1NmUxZjI0MGFkYTgzZTJmMGQyY2JkNWUyNy90YWJsZXJhbmdlOmEyZWJiNjU2ZTFmMjQwYWRhODNlMmYwZDJjYmQ1ZTI3XzYtNS0xLTEtMA_02612747-6944-4073-83ca-12de2b1b8fe1"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i4a05c430240548d7ae1e9439486e2959_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphMmViYjY1NmUxZjI0MGFkYTgzZTJmMGQyY2JkNWUyNy90YWJsZXJhbmdlOmEyZWJiNjU2ZTFmMjQwYWRhODNlMmYwZDJjYmQ1ZTI3XzYtNy0xLTEtMA_13fa45f5-4bd9-4651-81bf-73a54eadc6a1"
      unitRef="usd">11118000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="iafa0cc8ceb8744b589dad51320e7b254_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphMmViYjY1NmUxZjI0MGFkYTgzZTJmMGQyY2JkNWUyNy90YWJsZXJhbmdlOmEyZWJiNjU2ZTFmMjQwYWRhODNlMmYwZDJjYmQ1ZTI3XzktMS0xLTEtNTc3_72ab12b4-99c7-4173-9a19-71df140ab2f9"
      unitRef="usd">14233000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i3703ca84213b404bb3cda52c9cd9f86c_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphMmViYjY1NmUxZjI0MGFkYTgzZTJmMGQyY2JkNWUyNy90YWJsZXJhbmdlOmEyZWJiNjU2ZTFmMjQwYWRhODNlMmYwZDJjYmQ1ZTI3XzktMy0xLTEtNTc3_21cd4266-f5f9-43bf-8f5d-dcf8b778d158"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i5320fe164a0d41e0868d3ea73cf50da2_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphMmViYjY1NmUxZjI0MGFkYTgzZTJmMGQyY2JkNWUyNy90YWJsZXJhbmdlOmEyZWJiNjU2ZTFmMjQwYWRhODNlMmYwZDJjYmQ1ZTI3XzktNS0xLTEtNTc3_b3311d45-0b1c-4aa4-abdf-eb6272c9dad6"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i649b5470b0aa4b94a6b59f25c5c9e8a4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphMmViYjY1NmUxZjI0MGFkYTgzZTJmMGQyY2JkNWUyNy90YWJsZXJhbmdlOmEyZWJiNjU2ZTFmMjQwYWRhODNlMmYwZDJjYmQ1ZTI3XzktNy0xLTEtNTc3_3fc98099-b4fc-4e84-aeb4-d5d5273a41a8"
      unitRef="usd">14233000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i1610bd2373aa4a68aeadc900f79ca058_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphMmViYjY1NmUxZjI0MGFkYTgzZTJmMGQyY2JkNWUyNy90YWJsZXJhbmdlOmEyZWJiNjU2ZTFmMjQwYWRhODNlMmYwZDJjYmQ1ZTI3XzgtMS0xLTEtMA_a9ec5087-d01e-4342-a281-40cafe7de78b"
      unitRef="usd">14570000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i5b021b3f26974876a89fe29b014da4f7_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphMmViYjY1NmUxZjI0MGFkYTgzZTJmMGQyY2JkNWUyNy90YWJsZXJhbmdlOmEyZWJiNjU2ZTFmMjQwYWRhODNlMmYwZDJjYmQ1ZTI3XzgtMy0xLTEtMA_82c63109-4d5a-4a40-b97a-f5a3de7ef538"
      unitRef="usd">20732000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="ib8e7d2a2f1c7430f8b4578b37edf71d0_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphMmViYjY1NmUxZjI0MGFkYTgzZTJmMGQyY2JkNWUyNy90YWJsZXJhbmdlOmEyZWJiNjU2ZTFmMjQwYWRhODNlMmYwZDJjYmQ1ZTI3XzgtNS0xLTEtMA_e8edf39d-2ff2-4e81-85b0-c13f2b6e6c92"
      unitRef="usd">0</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="if987bb93d4bf48ff932dd2563732faff_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90YWJsZTphMmViYjY1NmUxZjI0MGFkYTgzZTJmMGQyY2JkNWUyNy90YWJsZXJhbmdlOmEyZWJiNjU2ZTFmMjQwYWRhODNlMmYwZDJjYmQ1ZTI3XzgtNy0xLTEtMA_8e5d435e-8a9b-4353-bbd5-eb3561941134"
      unitRef="usd">35302000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:DebtInstrumentFairValue
      contextRef="i515bfbaa190a4882b2eff4a3157c8383_I20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90ZXh0cmVnaW9uOmRhMjMxODYxNjY3ZTRhMzc4OWU5Zjk2YWY5ZDkyZWM4XzI3NDg3NzkwNzU2NjQ_e5279a71-e63a-4f96-8967-45d2d2749043"
      unitRef="usd">50000000.0</us-gaap:DebtInstrumentFairValue>
    <us-gaap:DebtInstrumentFairValue
      contextRef="ida9949b23cc94e42aa55e15986693711_I20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMDYvZnJhZzpkYTIzMTg2MTY2N2U0YTM3ODllOWY5NmFmOWQ5MmVjOC90ZXh0cmVnaW9uOmRhMjMxODYxNjY3ZTRhMzc4OWU5Zjk2YWY5ZDkyZWM4XzI3NDg3NzkwNzU2OTM_026b720e-e9c3-4d51-80c1-c1aea7b952ab"
      unitRef="usd">50000000.0</us-gaap:DebtInstrumentFairValue>
    <us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTIvZnJhZzpmZTNhYTgxODRhN2M0MjIzYWM4Nzk1ZGFmZDRiZWJlYS90ZXh0cmVnaW9uOmZlM2FhODE4NGE3YzQyMjNhYzg3OTVkYWZkNGJlYmVhXzIzMw_ff412966-2a86-4188-b3a7-b16631e8e63b">Property and Equipment, net&lt;div style="margin-top:10pt;text-indent:36pt"&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 consists of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.349%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.809%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.810%"/&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="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="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"&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;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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2019&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Data center and computer equipment&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,597&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;7,983&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Furniture and fixtures&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:10pt;font-weight:400;line-height:100%"&gt;6,021&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;3,953&#160;&lt;/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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Office equipment&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:10pt;font-weight:400;line-height:100%"&gt;3,324&#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:10pt;font-weight:400;line-height:100%"&gt;1,141&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Leasehold improvements&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:10pt;font-weight:400;line-height:100%"&gt;22,952&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;6,192&#160;&lt;/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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Construction in process&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:10pt;font-weight:400;line-height:100%"&gt;617&#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:10pt;font-weight:400;line-height:100%"&gt;7,118&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross property and equipment&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;37,511&#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:10pt;font-weight:400;line-height:100%"&gt;26,387&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Less: Accumulated depreciation&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:10pt;font-weight:400;line-height:100%"&gt;(11,072)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(11,643)&lt;/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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total property and equipment, net&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 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;$&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:10pt;font-weight:400;line-height:100%"&gt;26,439&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;14,744&#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-bottom:6pt;margin-top:12pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Depreciation expense for property and equipment totaled $4.0 million, $3.1 million, and $2.4 million for the years ended December&#160;31, 2020, 2019 and 2018, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;During September 2020, $13.9&#160;million of capitalized costs, principally comprised of furniture and fixtures and leasehold improvements related to our corporate headquarters in Santa Barbara, California were ready for their intended use and were placed into service.&lt;/span&gt;&lt;/div&gt;</us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i85131be12f96492f9e0ebdb0c1cd2b37_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTIvZnJhZzpmZTNhYTgxODRhN2M0MjIzYWM4Nzk1ZGFmZDRiZWJlYS90YWJsZTpkYjMzMjQxZTU0ZmE0NDAyOTMzMzkxYWJiMGIwMzYwNy90YWJsZXJhbmdlOmRiMzMyNDFlNTRmYTQ0MDI5MzMzOTFhYmIwYjAzNjA3XzItMS0xLTEtMA_2d0fc27a-ed84-4fe2-8d18-9e0d4f4f9340"
      unitRef="usd">4597000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i406c34a01e874bdbbc4db18c847351c5_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTIvZnJhZzpmZTNhYTgxODRhN2M0MjIzYWM4Nzk1ZGFmZDRiZWJlYS90YWJsZTpkYjMzMjQxZTU0ZmE0NDAyOTMzMzkxYWJiMGIwMzYwNy90YWJsZXJhbmdlOmRiMzMyNDFlNTRmYTQ0MDI5MzMzOTFhYmIwYjAzNjA3XzItMy0xLTEtMA_a69e4709-2457-4239-be5f-d4c6741c3d8a"
      unitRef="usd">7983000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="ia8afc8f42fe046c89039eb0f3abde265_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTIvZnJhZzpmZTNhYTgxODRhN2M0MjIzYWM4Nzk1ZGFmZDRiZWJlYS90YWJsZTpkYjMzMjQxZTU0ZmE0NDAyOTMzMzkxYWJiMGIwMzYwNy90YWJsZXJhbmdlOmRiMzMyNDFlNTRmYTQ0MDI5MzMzOTFhYmIwYjAzNjA3XzMtMS0xLTEtMA_5788f70e-0651-4118-a2cb-61e2314f0831"
      unitRef="usd">6021000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="ib25e2a8ea9e6467aaeb63e75eb846b63_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTIvZnJhZzpmZTNhYTgxODRhN2M0MjIzYWM4Nzk1ZGFmZDRiZWJlYS90YWJsZTpkYjMzMjQxZTU0ZmE0NDAyOTMzMzkxYWJiMGIwMzYwNy90YWJsZXJhbmdlOmRiMzMyNDFlNTRmYTQ0MDI5MzMzOTFhYmIwYjAzNjA3XzMtMy0xLTEtMA_716650ae-e1cd-4445-b32c-917145b6690c"
      unitRef="usd">3953000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="ia82cae4596f4432a9a60ae063dc10480_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTIvZnJhZzpmZTNhYTgxODRhN2M0MjIzYWM4Nzk1ZGFmZDRiZWJlYS90YWJsZTpkYjMzMjQxZTU0ZmE0NDAyOTMzMzkxYWJiMGIwMzYwNy90YWJsZXJhbmdlOmRiMzMyNDFlNTRmYTQ0MDI5MzMzOTFhYmIwYjAzNjA3XzQtMS0xLTEtMA_c836e637-0dcb-43df-a69f-cfc7f3619455"
      unitRef="usd">3324000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i512e9e91df8644dda8fa5f808dba04f0_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTIvZnJhZzpmZTNhYTgxODRhN2M0MjIzYWM4Nzk1ZGFmZDRiZWJlYS90YWJsZTpkYjMzMjQxZTU0ZmE0NDAyOTMzMzkxYWJiMGIwMzYwNy90YWJsZXJhbmdlOmRiMzMyNDFlNTRmYTQ0MDI5MzMzOTFhYmIwYjAzNjA3XzQtMy0xLTEtMA_9652dab7-0204-4ef0-acf8-7b737e37df4f"
      unitRef="usd">1141000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="ib43ad54ad91c4e21a9e213dcb3b4c221_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTIvZnJhZzpmZTNhYTgxODRhN2M0MjIzYWM4Nzk1ZGFmZDRiZWJlYS90YWJsZTpkYjMzMjQxZTU0ZmE0NDAyOTMzMzkxYWJiMGIwMzYwNy90YWJsZXJhbmdlOmRiMzMyNDFlNTRmYTQ0MDI5MzMzOTFhYmIwYjAzNjA3XzUtMS0xLTEtMA_5258d2f5-2c41-4ac6-972b-fe32c15ed519"
      unitRef="usd">22952000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i12a91ae5f4854962ba8dddb3d99cf44d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTIvZnJhZzpmZTNhYTgxODRhN2M0MjIzYWM4Nzk1ZGFmZDRiZWJlYS90YWJsZTpkYjMzMjQxZTU0ZmE0NDAyOTMzMzkxYWJiMGIwMzYwNy90YWJsZXJhbmdlOmRiMzMyNDFlNTRmYTQ0MDI5MzMzOTFhYmIwYjAzNjA3XzUtMy0xLTEtMA_e230c74f-02bb-481d-97c6-a2d8b69309ad"
      unitRef="usd">6192000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i2f2b6dd4a1024eeb93232927f1fafb3c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTIvZnJhZzpmZTNhYTgxODRhN2M0MjIzYWM4Nzk1ZGFmZDRiZWJlYS90YWJsZTpkYjMzMjQxZTU0ZmE0NDAyOTMzMzkxYWJiMGIwMzYwNy90YWJsZXJhbmdlOmRiMzMyNDFlNTRmYTQ0MDI5MzMzOTFhYmIwYjAzNjA3XzYtMS0xLTEtMA_e0702c0c-d2d0-4d70-a5a4-5463bc78dd05"
      unitRef="usd">617000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="ic563c8553e5f4977912b94d3467c73a7_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTIvZnJhZzpmZTNhYTgxODRhN2M0MjIzYWM4Nzk1ZGFmZDRiZWJlYS90YWJsZTpkYjMzMjQxZTU0ZmE0NDAyOTMzMzkxYWJiMGIwMzYwNy90YWJsZXJhbmdlOmRiMzMyNDFlNTRmYTQ0MDI5MzMzOTFhYmIwYjAzNjA3XzYtMy0xLTEtMA_b5c8f098-f60f-4eb3-ab22-915657124820"
      unitRef="usd">7118000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTIvZnJhZzpmZTNhYTgxODRhN2M0MjIzYWM4Nzk1ZGFmZDRiZWJlYS90YWJsZTpkYjMzMjQxZTU0ZmE0NDAyOTMzMzkxYWJiMGIwMzYwNy90YWJsZXJhbmdlOmRiMzMyNDFlNTRmYTQ0MDI5MzMzOTFhYmIwYjAzNjA3XzctMS0xLTEtMA_9c57042c-a055-40af-acd8-f0b5e012a42b"
      unitRef="usd">37511000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTIvZnJhZzpmZTNhYTgxODRhN2M0MjIzYWM4Nzk1ZGFmZDRiZWJlYS90YWJsZTpkYjMzMjQxZTU0ZmE0NDAyOTMzMzkxYWJiMGIwMzYwNy90YWJsZXJhbmdlOmRiMzMyNDFlNTRmYTQ0MDI5MzMzOTFhYmIwYjAzNjA3XzctMy0xLTEtMA_dde09b48-4b3b-432a-bf61-92a56a9b0ae2"
      unitRef="usd">26387000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTIvZnJhZzpmZTNhYTgxODRhN2M0MjIzYWM4Nzk1ZGFmZDRiZWJlYS90YWJsZTpkYjMzMjQxZTU0ZmE0NDAyOTMzMzkxYWJiMGIwMzYwNy90YWJsZXJhbmdlOmRiMzMyNDFlNTRmYTQ0MDI5MzMzOTFhYmIwYjAzNjA3XzgtMS0xLTEtMA_18081194-722c-47d4-8bc8-5080c76f9908"
      unitRef="usd">11072000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTIvZnJhZzpmZTNhYTgxODRhN2M0MjIzYWM4Nzk1ZGFmZDRiZWJlYS90YWJsZTpkYjMzMjQxZTU0ZmE0NDAyOTMzMzkxYWJiMGIwMzYwNy90YWJsZXJhbmdlOmRiMzMyNDFlNTRmYTQ0MDI5MzMzOTFhYmIwYjAzNjA3XzgtMy0xLTEtMA_6c7db665-b2ee-406a-9d28-ac1782bd36f5"
      unitRef="usd">11643000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTIvZnJhZzpmZTNhYTgxODRhN2M0MjIzYWM4Nzk1ZGFmZDRiZWJlYS90YWJsZTpkYjMzMjQxZTU0ZmE0NDAyOTMzMzkxYWJiMGIwMzYwNy90YWJsZXJhbmdlOmRiMzMyNDFlNTRmYTQ0MDI5MzMzOTFhYmIwYjAzNjA3XzktMS0xLTEtMA_ab2d89b1-d0db-47af-9411-eb238a7885fd"
      unitRef="usd">26439000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTIvZnJhZzpmZTNhYTgxODRhN2M0MjIzYWM4Nzk1ZGFmZDRiZWJlYS90YWJsZTpkYjMzMjQxZTU0ZmE0NDAyOTMzMzkxYWJiMGIwMzYwNy90YWJsZXJhbmdlOmRiMzMyNDFlNTRmYTQ0MDI5MzMzOTFhYmIwYjAzNjA3XzktMy0xLTEtMA_1e4ac712-d377-4848-953e-08414656f8bc"
      unitRef="usd">14744000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:Depreciation
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTIvZnJhZzpmZTNhYTgxODRhN2M0MjIzYWM4Nzk1ZGFmZDRiZWJlYS90ZXh0cmVnaW9uOmZlM2FhODE4NGE3YzQyMjNhYzg3OTVkYWZkNGJlYmVhXzE2OQ_c3e9dc90-0631-48f1-b4b9-1de6b9a4e982"
      unitRef="usd">4000000.0</us-gaap:Depreciation>
    <us-gaap:Depreciation
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTIvZnJhZzpmZTNhYTgxODRhN2M0MjIzYWM4Nzk1ZGFmZDRiZWJlYS90ZXh0cmVnaW9uOmZlM2FhODE4NGE3YzQyMjNhYzg3OTVkYWZkNGJlYmVhXzE3Mw_112c4dd5-aaae-4d45-ba4f-bbf89bbede08"
      unitRef="usd">3100000</us-gaap:Depreciation>
    <us-gaap:Depreciation
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTIvZnJhZzpmZTNhYTgxODRhN2M0MjIzYWM4Nzk1ZGFmZDRiZWJlYS90ZXh0cmVnaW9uOmZlM2FhODE4NGE3YzQyMjNhYzg3OTVkYWZkNGJlYmVhXzE4MQ_eebcc952-596d-4078-a3f2-f441f8c3ab06"
      unitRef="usd">2400000</us-gaap:Depreciation>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i4127e588db5841269435404cd726e073_I20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTIvZnJhZzpmZTNhYTgxODRhN2M0MjIzYWM4Nzk1ZGFmZDRiZWJlYS90ZXh0cmVnaW9uOmZlM2FhODE4NGE3YzQyMjNhYzg3OTVkYWZkNGJlYmVhXzY1OTcwNjk3Njc4NTY_2ad470e8-d99c-4aa0-b15e-cb3bc0e7fdb8"
      unitRef="usd">13900000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:ResearchDevelopmentAndComputerSoftwareDisclosureTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTUvZnJhZzpjYjNmNjJiMDhiMjI0YzlkOTI4OWU5YmE2ZmUyNjE3OC90ZXh0cmVnaW9uOmNiM2Y2MmIwOGIyMjRjOWQ5Mjg5ZTliYTZmZTI2MTc4XzUwNg_f7c48323-d01f-4eb1-ac5d-42144280168a">Capitalized Software Development Costs, net&lt;div style="margin-bottom:6pt;margin-top:10pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Capitalized software development costs, net were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:69.617%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.809%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.810%"/&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;2020&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;2019&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Capitalized software development costs, gross&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;96,974&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;81,475&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Less: Accumulated amortization&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:10pt;font-weight:400;line-height:100%"&gt;(61,515)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(51,452)&lt;/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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Capitalized software development costs, net&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;35,459&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;30,023&#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:6pt;margin-top:12pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Capitalized software development costs were $27.3 million, $23.6 million and $13.8 million for the years ended December&#160;31, 2020, 2019 and 2018, respectively. Amortization expense with respect to software development costs totaled $17.9 million, $14.0 million and $11.0 million for the years ended December&#160;31, 2020, 2019 and 2018, respectively. During the year ended December&#160;31, 2020, $3.9 million in capitalized software development costs were divested in connection with the MyCase Transaction. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Future amortization expense with respect to capitalized software development costs at December&#160;31, 2020 is estimated as follows (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:84.258%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.810%"/&gt;&lt;td style="width:0.1%"/&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:10pt;font-weight:400;line-height:100%"&gt;Years Ending December 31,&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;/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:10pt;font-weight:400;line-height:100%"&gt;2021&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;18,008&#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:10pt;font-weight:400;line-height:100%"&gt;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;padding:2px 0 2px 1pt;text-align:right;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;12,783&#160;&lt;/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:10pt;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;padding:2px 0 2px 1pt;text-align:right;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;4,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;/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:#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:10pt;font-weight:400;line-height:100%"&gt;Total amortization expense&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: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:10pt;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: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:10pt;font-weight:400;line-height:100%"&gt;35,459&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;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:ResearchDevelopmentAndComputerSoftwareDisclosureTextBlock>
    <appf:ScheduleOfCapitalizedComputerSoftwareTableTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTUvZnJhZzpjYjNmNjJiMDhiMjI0YzlkOTI4OWU5YmE2ZmUyNjE3OC90ZXh0cmVnaW9uOmNiM2Y2MmIwOGIyMjRjOWQ5Mjg5ZTliYTZmZTI2MTc4XzUxNQ_18ed28cd-6196-4809-b3ec-ac2fe276bf85">&lt;div style="margin-bottom:6pt;margin-top:10pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Capitalized software development costs, net were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:69.617%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.809%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.810%"/&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;2020&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;2019&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Capitalized software development costs, gross&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;96,974&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;81,475&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Less: Accumulated amortization&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:10pt;font-weight:400;line-height:100%"&gt;(61,515)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(51,452)&lt;/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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Capitalized software development costs, net&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;35,459&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;30,023&#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;</appf:ScheduleOfCapitalizedComputerSoftwareTableTextBlock>
    <us-gaap:CapitalizedComputerSoftwareGross
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTUvZnJhZzpjYjNmNjJiMDhiMjI0YzlkOTI4OWU5YmE2ZmUyNjE3OC90YWJsZTo2OWViMmY5ODNlZWM0YjQ2ODcwMzhmZDk1NjFlYzA4Yy90YWJsZXJhbmdlOjY5ZWIyZjk4M2VlYzRiNDY4NzAzOGZkOTU2MWVjMDhjXzItMi0xLTEtMA_6ecd992b-8e35-46fe-9fbc-1d9a319ff767"
      unitRef="usd">96974000</us-gaap:CapitalizedComputerSoftwareGross>
    <us-gaap:CapitalizedComputerSoftwareGross
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTUvZnJhZzpjYjNmNjJiMDhiMjI0YzlkOTI4OWU5YmE2ZmUyNjE3OC90YWJsZTo2OWViMmY5ODNlZWM0YjQ2ODcwMzhmZDk1NjFlYzA4Yy90YWJsZXJhbmdlOjY5ZWIyZjk4M2VlYzRiNDY4NzAzOGZkOTU2MWVjMDhjXzItNC0xLTEtMA_a6d27c1b-d62d-4693-9b1a-657e54aca76d"
      unitRef="usd">81475000</us-gaap:CapitalizedComputerSoftwareGross>
    <us-gaap:CapitalizedComputerSoftwareAccumulatedAmortization
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTUvZnJhZzpjYjNmNjJiMDhiMjI0YzlkOTI4OWU5YmE2ZmUyNjE3OC90YWJsZTo2OWViMmY5ODNlZWM0YjQ2ODcwMzhmZDk1NjFlYzA4Yy90YWJsZXJhbmdlOjY5ZWIyZjk4M2VlYzRiNDY4NzAzOGZkOTU2MWVjMDhjXzMtMi0xLTEtMA_45aea063-1a5c-4330-8d6f-f0095f4e4c6c"
      unitRef="usd">61515000</us-gaap:CapitalizedComputerSoftwareAccumulatedAmortization>
    <us-gaap:CapitalizedComputerSoftwareAccumulatedAmortization
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTUvZnJhZzpjYjNmNjJiMDhiMjI0YzlkOTI4OWU5YmE2ZmUyNjE3OC90YWJsZTo2OWViMmY5ODNlZWM0YjQ2ODcwMzhmZDk1NjFlYzA4Yy90YWJsZXJhbmdlOjY5ZWIyZjk4M2VlYzRiNDY4NzAzOGZkOTU2MWVjMDhjXzMtNC0xLTEtMA_287a69aa-e2a1-4b98-92d7-d56797a9c5d6"
      unitRef="usd">51452000</us-gaap:CapitalizedComputerSoftwareAccumulatedAmortization>
    <us-gaap:CapitalizedComputerSoftwareNet
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTUvZnJhZzpjYjNmNjJiMDhiMjI0YzlkOTI4OWU5YmE2ZmUyNjE3OC90YWJsZTo2OWViMmY5ODNlZWM0YjQ2ODcwMzhmZDk1NjFlYzA4Yy90YWJsZXJhbmdlOjY5ZWIyZjk4M2VlYzRiNDY4NzAzOGZkOTU2MWVjMDhjXzQtMi0xLTEtMA_d8deba87-7fb6-4dc5-bfab-7aa36655a3ad"
      unitRef="usd">35459000</us-gaap:CapitalizedComputerSoftwareNet>
    <us-gaap:CapitalizedComputerSoftwareNet
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTUvZnJhZzpjYjNmNjJiMDhiMjI0YzlkOTI4OWU5YmE2ZmUyNjE3OC90YWJsZTo2OWViMmY5ODNlZWM0YjQ2ODcwMzhmZDk1NjFlYzA4Yy90YWJsZXJhbmdlOjY5ZWIyZjk4M2VlYzRiNDY4NzAzOGZkOTU2MWVjMDhjXzQtNC0xLTEtMA_6205925a-ac3e-4c7d-984a-6ccad5252ee5"
      unitRef="usd">30023000</us-gaap:CapitalizedComputerSoftwareNet>
    <us-gaap:CapitalizedComputerSoftwareAdditions
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTUvZnJhZzpjYjNmNjJiMDhiMjI0YzlkOTI4OWU5YmE2ZmUyNjE3OC90ZXh0cmVnaW9uOmNiM2Y2MmIwOGIyMjRjOWQ5Mjg5ZTliYTZmZTI2MTc4XzE3Mg_ddbf3434-28bc-4e17-8863-2622790bff8f"
      unitRef="usd">27300000</us-gaap:CapitalizedComputerSoftwareAdditions>
    <us-gaap:CapitalizedComputerSoftwareAdditions
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTUvZnJhZzpjYjNmNjJiMDhiMjI0YzlkOTI4OWU5YmE2ZmUyNjE3OC90ZXh0cmVnaW9uOmNiM2Y2MmIwOGIyMjRjOWQ5Mjg5ZTliYTZmZTI2MTc4XzE3Ng_6045366e-7596-4620-8d12-613a054472f1"
      unitRef="usd">23600000</us-gaap:CapitalizedComputerSoftwareAdditions>
    <us-gaap:CapitalizedComputerSoftwareAdditions
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTUvZnJhZzpjYjNmNjJiMDhiMjI0YzlkOTI4OWU5YmE2ZmUyNjE3OC90ZXh0cmVnaW9uOmNiM2Y2MmIwOGIyMjRjOWQ5Mjg5ZTliYTZmZTI2MTc4XzE4Mw_093bec51-b192-4f41-86f7-3185bebcc00f"
      unitRef="usd">13800000</us-gaap:CapitalizedComputerSoftwareAdditions>
    <us-gaap:CapitalizedComputerSoftwareAmortization1
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTUvZnJhZzpjYjNmNjJiMDhiMjI0YzlkOTI4OWU5YmE2ZmUyNjE3OC90ZXh0cmVnaW9uOmNiM2Y2MmIwOGIyMjRjOWQ5Mjg5ZTliYTZmZTI2MTc4XzMwNw_40e7bc21-2416-4ce4-a0a3-f0b2fd3c2ab8"
      unitRef="usd">17900000</us-gaap:CapitalizedComputerSoftwareAmortization1>
    <us-gaap:CapitalizedComputerSoftwareAmortization1
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTUvZnJhZzpjYjNmNjJiMDhiMjI0YzlkOTI4OWU5YmE2ZmUyNjE3OC90ZXh0cmVnaW9uOmNiM2Y2MmIwOGIyMjRjOWQ5Mjg5ZTliYTZmZTI2MTc4XzMxMQ_8e6cd128-1b13-4e7c-b0ae-0aa4811a453a"
      unitRef="usd">14000000.0</us-gaap:CapitalizedComputerSoftwareAmortization1>
    <us-gaap:CapitalizedComputerSoftwareAmortization1
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTUvZnJhZzpjYjNmNjJiMDhiMjI0YzlkOTI4OWU5YmE2ZmUyNjE3OC90ZXh0cmVnaW9uOmNiM2Y2MmIwOGIyMjRjOWQ5Mjg5ZTliYTZmZTI2MTc4XzMxOA_f19929d1-3ab4-4175-93e3-285a5fc0756b"
      unitRef="usd">11000000.0</us-gaap:CapitalizedComputerSoftwareAmortization1>
    <appf:DisposalGroupIncludingDiscontinuedOperationCapitalizedSoftware
      contextRef="i30010c4df2d84ca88b90d5ce364f97ae_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTUvZnJhZzpjYjNmNjJiMDhiMjI0YzlkOTI4OWU5YmE2ZmUyNjE3OC90ZXh0cmVnaW9uOmNiM2Y2MmIwOGIyMjRjOWQ5Mjg5ZTliYTZmZTI2MTc4XzEwOTk1MTE2Mjg1OTA_a4ff8a37-c58c-4734-912f-43b0af3c9ffc"
      unitRef="usd">3900000</appf:DisposalGroupIncludingDiscontinuedOperationCapitalizedSoftware>
    <us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTUvZnJhZzpjYjNmNjJiMDhiMjI0YzlkOTI4OWU5YmE2ZmUyNjE3OC90ZXh0cmVnaW9uOmNiM2Y2MmIwOGIyMjRjOWQ5Mjg5ZTliYTZmZTI2MTc4XzUwNA_8f59dd70-55a2-4f4d-872a-683ed9c6caf1">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Future amortization expense with respect to capitalized software development costs at December&#160;31, 2020 is estimated as follows (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:84.258%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.810%"/&gt;&lt;td style="width:0.1%"/&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:10pt;font-weight:400;line-height:100%"&gt;Years Ending December 31,&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;/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:10pt;font-weight:400;line-height:100%"&gt;2021&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;18,008&#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:10pt;font-weight:400;line-height:100%"&gt;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;padding:2px 0 2px 1pt;text-align:right;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;12,783&#160;&lt;/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:10pt;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;padding:2px 0 2px 1pt;text-align:right;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;4,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;/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:#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:10pt;font-weight:400;line-height:100%"&gt;Total amortization expense&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: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:10pt;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: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:10pt;font-weight:400;line-height:100%"&gt;35,459&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;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:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock>
    <appf:CapitalizedComputerSoftwareAmortizationExpenseYearOne
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTUvZnJhZzpjYjNmNjJiMDhiMjI0YzlkOTI4OWU5YmE2ZmUyNjE3OC90YWJsZTo0NWEyOWViNTNkODk0MTRmODFjMjgyYjAzMTBiMGYwNy90YWJsZXJhbmdlOjQ1YTI5ZWI1M2Q4OTQxNGY4MWMyODJiMDMxMGIwZjA3XzEtMi0xLTEtMA_8534c9e5-3f6c-46c8-827f-7ba2757a7fdb"
      unitRef="usd">18008000</appf:CapitalizedComputerSoftwareAmortizationExpenseYearOne>
    <appf:CapitalizedComputerSoftwareAmortizationExpenseYearTwo
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTUvZnJhZzpjYjNmNjJiMDhiMjI0YzlkOTI4OWU5YmE2ZmUyNjE3OC90YWJsZTo0NWEyOWViNTNkODk0MTRmODFjMjgyYjAzMTBiMGYwNy90YWJsZXJhbmdlOjQ1YTI5ZWI1M2Q4OTQxNGY4MWMyODJiMDMxMGIwZjA3XzItMi0xLTEtMA_d9c56e46-fc95-499f-b924-43f994f930db"
      unitRef="usd">12783000</appf:CapitalizedComputerSoftwareAmortizationExpenseYearTwo>
    <appf:CapitalizedComputerSoftwareAmortizationExpenseYearThree
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTUvZnJhZzpjYjNmNjJiMDhiMjI0YzlkOTI4OWU5YmE2ZmUyNjE3OC90YWJsZTo0NWEyOWViNTNkODk0MTRmODFjMjgyYjAzMTBiMGYwNy90YWJsZXJhbmdlOjQ1YTI5ZWI1M2Q4OTQxNGY4MWMyODJiMDMxMGIwZjA3XzMtMi0xLTEtMA_9c57b79d-ceb5-48cc-943f-357eaa0bba9d"
      unitRef="usd">4668000</appf:CapitalizedComputerSoftwareAmortizationExpenseYearThree>
    <us-gaap:CapitalizedComputerSoftwareNet
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTUvZnJhZzpjYjNmNjJiMDhiMjI0YzlkOTI4OWU5YmE2ZmUyNjE3OC90YWJsZTo0NWEyOWViNTNkODk0MTRmODFjMjgyYjAzMTBiMGYwNy90YWJsZXJhbmdlOjQ1YTI5ZWI1M2Q4OTQxNGY4MWMyODJiMDMxMGIwZjA3XzUtMi0xLTEtMA_97be1885-6dec-4f14-9e44-c32e0d61b0e2"
      unitRef="usd">35459000</us-gaap:CapitalizedComputerSoftwareNet>
    <us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90ZXh0cmVnaW9uOjRiOGQxMWY2MzM5YTQwNDc5Mzc0ODgzZjMyODhkYTVmXzcxNw_602fd409-1c6a-4c4d-b30d-418842637dc6">Intangible Assets, net and Goodwill&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Intangible assets, net consisted of the following (in thousands, except years):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.856%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:32.137%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.519%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.871%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.519%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.871%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.519%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.871%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.519%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.874%"/&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="21" 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, 2020&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:400;line-height:100%"&gt;&#160;&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;Gross&#160;Carrying&lt;br/&gt;Value&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;Accumulated&lt;br/&gt;Amortization&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;Net&#160;Carrying&lt;br/&gt;Value&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;Weighted&lt;br/&gt;Average&#160;Useful&lt;br/&gt;Life in Years&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:10pt;font-weight:400;line-height:100%"&gt;Customer relationships&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;2,840&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(1,550)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;1,290&#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:2px 1pt;text-align:right;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;5.0&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Database&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:10pt;font-weight:400;line-height:100%"&gt;8,330&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(1,787)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;6,543&#160;&lt;/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:right;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;10.0&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:10pt;font-weight:400;line-height:100%"&gt;Technology&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:10pt;font-weight:400;line-height:100%"&gt;6,539&#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:10pt;font-weight:400;line-height:100%"&gt;(3,641)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;2,898&#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:right;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;4.0&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:10pt;font-weight:400;line-height:100%"&gt;Trademarks and trade names&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:10pt;font-weight:400;line-height:100%"&gt;1,890&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(732)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;1,158&#160;&lt;/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:right;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;5.0&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:10pt;font-weight:400;line-height:100%"&gt;Partner relationships&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:10pt;font-weight:400;line-height:100%"&gt;680&#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:10pt;font-weight:400;line-height:100%"&gt;(680)&lt;/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:10pt;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="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;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;3.0&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:10pt;font-weight:400;line-height:100%"&gt;Non-compete agreements&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:10pt;font-weight:400;line-height:100%"&gt;7,400&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(2,964)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;4,436&#160;&lt;/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:right;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;5.0&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:10pt;font-weight:400;line-height:100%"&gt;Domain names&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:10pt;font-weight:400;line-height:100%"&gt;90&#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:10pt;font-weight:400;line-height:100%"&gt;(70)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;20&#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:right;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;5.0&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:10pt;font-weight:400;line-height:100%"&gt;Patents&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:10pt;font-weight:400;line-height:100%"&gt;252&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(240)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;12&#160;&lt;/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:right;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;5.0&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;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total intangible assets, net&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000000;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;28,021&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(11,664)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;16,357&#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 colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;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;6.3&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.712%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:31.897%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.894%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.894%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.894%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.041%"/&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="21" 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, 2019&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:400;line-height:100%"&gt;&#160;&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;Gross&#160;Carrying&lt;br/&gt;Value&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;Accumulated&lt;br/&gt;Amortization&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;Net&#160;Carrying&lt;br/&gt;Value&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;Weighted&lt;br/&gt;Average&#160;Useful&lt;br/&gt;Life in Years&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Customer relationships&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;3,070&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(1,296)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;1,774&#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:2px 1pt;text-align:right;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;5.0&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Database&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:10pt;font-weight:400;line-height:100%"&gt;8,330&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(954)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;7,376&#160;&lt;/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:right;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;10.0&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Technology&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:10pt;font-weight:400;line-height:100%"&gt;10,541&#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:10pt;font-weight:400;line-height:100%"&gt;(6,074)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;4,467&#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:right;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;5.0&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Trademarks and trade names&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:10pt;font-weight:400;line-height:100%"&gt;2,690&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(898)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;1,792&#160;&lt;/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:right;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;6.0&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Partner relationships&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:10pt;font-weight:400;line-height:100%"&gt;680&#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:10pt;font-weight:400;line-height:100%"&gt;(680)&lt;/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:10pt;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="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;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;3.0&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-compete agreements&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:10pt;font-weight:400;line-height:100%"&gt;7,400&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(1,484)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;5,916&#160;&lt;/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:right;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;5.0&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Domain names&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:10pt;font-weight:400;line-height:100%"&gt;301&#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:10pt;font-weight:400;line-height:100%"&gt;(276)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;25&#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:right;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;5.0&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Patents&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:10pt;font-weight:400;line-height:100%"&gt;252&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(225)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;27&#160;&lt;/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:right;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;5.0&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Backlog&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:10pt;font-weight:400;line-height:100%"&gt;470&#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:10pt;font-weight:400;line-height:100%"&gt;(470)&lt;/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:10pt;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="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;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;1.0&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total intangible assets, net&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 #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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;33,734&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(12,357)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;21,377&#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 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:10pt;font-weight:400;line-height:100%"&gt;6.2&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:12pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Amortization expense with respect to intangible assets totaled $4.9 million, $5.3 million and $1.2 million for the years ended December&#160;31, 2020, 2019 and 2018, respectively. Future amortization expense with respect to intangible assets is estimated as follows (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.712%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:82.617%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.463%"/&gt;&lt;td style="width:0.1%"/&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:10pt;font-weight:400;line-height:100%"&gt;Years Ending December 31,&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;/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:10pt;font-weight:400;line-height:100%"&gt;2021&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,646&#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:10pt;font-weight:400;line-height:100%"&gt;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;padding:2px 0 2px 1pt;text-align:right;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;4,605&#160;&lt;/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:10pt;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;padding:2px 0 2px 1pt;text-align:right;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;3,060&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;835&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;833&#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:10pt;font-weight:400;line-height:100%"&gt;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:10pt;font-weight:400;line-height:100%"&gt;2,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;/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:10pt;font-weight:400;line-height:100%"&gt;Total amortization 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-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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;16,357&#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:6pt;margin-top:12pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Our goodwill balance is solely attributed to acquisitions. As a result of the disposal of goodwill associated with the MyCase Transaction, we performed a goodwill impairment assessment as of September 30, 2020 on our remaining goodwill balance. There have been no impairment charges recorded against goodwill. The change in the carrying amount of goodwill during the twelve months ended December&#160;31, 2020 is as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:82.664%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.518%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.418%"/&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:10pt;font-weight:400;line-height:100%"&gt;Goodwill at December 31, 2019&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;58,425&#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:10pt;font-weight:400;line-height:100%"&gt;Goodwill attributed to MyCase divestiture&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:10pt;font-weight:400;line-height:100%"&gt;(2,278)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Goodwill at 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-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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;56,147&#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:GoodwillAndIntangibleAssetsDisclosureTextBlock>
    <us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90ZXh0cmVnaW9uOjRiOGQxMWY2MzM5YTQwNDc5Mzc0ODgzZjMyODhkYTVmXzcxNA_4c93c4dd-7aa4-4172-bec0-26de4f7e64d7">&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Intangible assets, net consisted of the following (in thousands, except years):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.856%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:32.137%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.519%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.871%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.519%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.871%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.519%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.871%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.519%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.874%"/&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="21" 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, 2020&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:400;line-height:100%"&gt;&#160;&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;Gross&#160;Carrying&lt;br/&gt;Value&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;Accumulated&lt;br/&gt;Amortization&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;Net&#160;Carrying&lt;br/&gt;Value&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;Weighted&lt;br/&gt;Average&#160;Useful&lt;br/&gt;Life in Years&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:10pt;font-weight:400;line-height:100%"&gt;Customer relationships&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;2,840&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(1,550)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;1,290&#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:2px 1pt;text-align:right;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;5.0&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Database&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:10pt;font-weight:400;line-height:100%"&gt;8,330&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(1,787)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;6,543&#160;&lt;/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:right;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;10.0&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:10pt;font-weight:400;line-height:100%"&gt;Technology&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:10pt;font-weight:400;line-height:100%"&gt;6,539&#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:10pt;font-weight:400;line-height:100%"&gt;(3,641)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;2,898&#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:right;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;4.0&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:10pt;font-weight:400;line-height:100%"&gt;Trademarks and trade names&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:10pt;font-weight:400;line-height:100%"&gt;1,890&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(732)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;1,158&#160;&lt;/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:right;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;5.0&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:10pt;font-weight:400;line-height:100%"&gt;Partner relationships&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:10pt;font-weight:400;line-height:100%"&gt;680&#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:10pt;font-weight:400;line-height:100%"&gt;(680)&lt;/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:10pt;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="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;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;3.0&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:10pt;font-weight:400;line-height:100%"&gt;Non-compete agreements&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:10pt;font-weight:400;line-height:100%"&gt;7,400&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(2,964)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;4,436&#160;&lt;/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:right;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;5.0&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:10pt;font-weight:400;line-height:100%"&gt;Domain names&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:10pt;font-weight:400;line-height:100%"&gt;90&#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:10pt;font-weight:400;line-height:100%"&gt;(70)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;20&#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:right;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;5.0&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:10pt;font-weight:400;line-height:100%"&gt;Patents&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:10pt;font-weight:400;line-height:100%"&gt;252&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(240)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;12&#160;&lt;/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:right;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;5.0&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;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total intangible assets, net&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000000;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;28,021&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(11,664)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;16,357&#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 colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;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;6.3&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.712%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:31.897%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.894%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.894%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.894%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.041%"/&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="21" 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, 2019&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:400;line-height:100%"&gt;&#160;&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;Gross&#160;Carrying&lt;br/&gt;Value&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;Accumulated&lt;br/&gt;Amortization&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;Net&#160;Carrying&lt;br/&gt;Value&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;Weighted&lt;br/&gt;Average&#160;Useful&lt;br/&gt;Life in Years&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Customer relationships&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;3,070&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(1,296)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;1,774&#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:2px 1pt;text-align:right;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;5.0&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Database&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:10pt;font-weight:400;line-height:100%"&gt;8,330&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(954)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;7,376&#160;&lt;/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:right;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;10.0&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Technology&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:10pt;font-weight:400;line-height:100%"&gt;10,541&#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:10pt;font-weight:400;line-height:100%"&gt;(6,074)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;4,467&#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:right;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;5.0&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Trademarks and trade names&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:10pt;font-weight:400;line-height:100%"&gt;2,690&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(898)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;1,792&#160;&lt;/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:right;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;6.0&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Partner relationships&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:10pt;font-weight:400;line-height:100%"&gt;680&#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:10pt;font-weight:400;line-height:100%"&gt;(680)&lt;/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:10pt;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="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;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;3.0&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-compete agreements&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:10pt;font-weight:400;line-height:100%"&gt;7,400&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(1,484)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;5,916&#160;&lt;/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:right;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;5.0&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Domain names&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:10pt;font-weight:400;line-height:100%"&gt;301&#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:10pt;font-weight:400;line-height:100%"&gt;(276)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;25&#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:right;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;5.0&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Patents&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:10pt;font-weight:400;line-height:100%"&gt;252&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(225)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;27&#160;&lt;/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:right;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;5.0&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Backlog&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:10pt;font-weight:400;line-height:100%"&gt;470&#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:10pt;font-weight:400;line-height:100%"&gt;(470)&lt;/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:10pt;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="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;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;1.0&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total intangible assets, net&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 #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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;33,734&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(12,357)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;21,377&#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 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:10pt;font-weight:400;line-height:100%"&gt;6.2&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="iea76d1d765f54e6d80291c4826ac3a13_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzItMi0xLTEtMA_2e9d5020-ac2a-4051-8899-de6b4275a490"
      unitRef="usd">2840000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="iea76d1d765f54e6d80291c4826ac3a13_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzItNC0xLTEtMA_ade3312b-69b7-4a0a-9095-031c86c11909"
      unitRef="usd">1550000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="iea76d1d765f54e6d80291c4826ac3a13_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzItNi0xLTEtMA_aec31857-ceee-47a8-afab-c477a8581942"
      unitRef="usd">1290000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="if5d02b7ae4fc48bf8963cb0529762997_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzItOC0xLTEtMA_fa4af135-48b0-40b1-8acc-bb27349bb945">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="if2948fe13c5c4baf8a273630f7e05c6a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzMtMi0xLTEtMA_cf5c549a-0106-4fb4-8ab2-52c1f41dca74"
      unitRef="usd">8330000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="if2948fe13c5c4baf8a273630f7e05c6a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzMtNC0xLTEtMA_0a639af9-d7e8-4412-aac9-5ecacab33998"
      unitRef="usd">1787000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="if2948fe13c5c4baf8a273630f7e05c6a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzMtNi0xLTEtMA_e83f927d-614c-46d5-ab71-3a34b65d29e3"
      unitRef="usd">6543000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i2f0717644b964c458b04d2ff9f73b68b_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzMtOC0xLTEtMA_cf4d24d9-9c4e-4e4c-82fd-8ae4c824f252">P10Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="ie8aadda0e8c746b287950afae233ea5d_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzQtMi0xLTEtMA_20fa7256-31f3-41f6-8341-72f4aac40e71"
      unitRef="usd">6539000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="ie8aadda0e8c746b287950afae233ea5d_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzQtNC0xLTEtMA_3a8c346d-4e5b-4c29-8543-88713d22d816"
      unitRef="usd">3641000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="ie8aadda0e8c746b287950afae233ea5d_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzQtNi0xLTEtMA_ed714771-3696-405d-8768-870cc30d2ee8"
      unitRef="usd">2898000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i06a3dcc6b8864fe0b010eadbf7e5acde_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzQtOC0xLTEtMA_4af3c7f2-2749-4119-81f9-995f1eec0e7f">P4Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i9c393c835fa44f2da654193a7234825b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzUtMi0xLTEtMA_55990fe1-4267-48da-858a-c06fda23a046"
      unitRef="usd">1890000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i9c393c835fa44f2da654193a7234825b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzUtNC0xLTEtMA_368d1c12-2995-4414-928e-12ad5ffa44c6"
      unitRef="usd">732000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i9c393c835fa44f2da654193a7234825b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzUtNi0xLTEtMA_9b8ac9dd-8a09-477c-8811-72f954cddd2e"
      unitRef="usd">1158000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i59585b72b31549fbbf496319fdffdc12_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzUtOC0xLTEtMA_1a6ebfa6-193f-482e-ace5-d96c07a34a0b">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i4bfcdf0391e844229cded3519641beec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzYtMi0xLTEtMA_0d8a08df-0d01-4e0e-95d2-4d73db5acc03"
      unitRef="usd">680000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i4bfcdf0391e844229cded3519641beec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzYtNC0xLTEtMA_9c2a67bc-677e-4d31-8632-9e423945042b"
      unitRef="usd">680000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i4bfcdf0391e844229cded3519641beec_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzYtNi0xLTEtMA_aa86ec86-e88e-46cf-830e-818dc39fd5e8"
      unitRef="usd">0</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="ifeed99d15f794c749d7b94c1cdceb0ae_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzYtOC0xLTEtMA_f2571b87-7b1b-49f7-9ea7-2d718ee4d304">P3Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i59322443f64f42fa82a6aeb2d870940d_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzctMi0xLTEtMA_2f0df12a-bf7f-4c89-bc05-1a5996d95b14"
      unitRef="usd">7400000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i59322443f64f42fa82a6aeb2d870940d_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzctNC0xLTEtMA_e576534e-6db5-46f0-b5c3-e484ccab8289"
      unitRef="usd">2964000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i59322443f64f42fa82a6aeb2d870940d_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzctNi0xLTEtMA_ea70b1d6-2384-478a-8b5b-118300a889a0"
      unitRef="usd">4436000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i6fde2b93714b413ba202ab95939db554_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzctOC0xLTEtMA_9211b70b-ac76-4574-8791-ec69ca9420e9">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i0e78dc2e785542e2a2b5644873e00020_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzgtMi0xLTEtMA_9afaa161-15ad-4a68-ab29-7e44cd5ffb2a"
      unitRef="usd">90000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i0e78dc2e785542e2a2b5644873e00020_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzgtNC0xLTEtMA_501e72b8-5007-4277-9f99-1982c039e2ce"
      unitRef="usd">70000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i0e78dc2e785542e2a2b5644873e00020_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzgtNi0xLTEtMA_4410e46a-95d5-4a62-a95f-82126f81350a"
      unitRef="usd">20000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="icf919fe6398845959f7346b359253f90_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzgtOC0xLTEtMA_6b81630e-f634-4c53-b732-748dd3b790ef">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="if01218679d634590b83a3577557223ad_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzktMi0xLTEtMA_78845df0-c956-4198-9b5d-c4050cefba30"
      unitRef="usd">252000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="if01218679d634590b83a3577557223ad_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzktNC0xLTEtMA_935f9489-d0a0-434c-8798-4e3dc327988b"
      unitRef="usd">240000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="if01218679d634590b83a3577557223ad_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzktNi0xLTEtMA_bc3c4883-e070-4bb6-a1c4-74a614f54582"
      unitRef="usd">12000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i6da119b01e514b70934f4ec2f647a9d6_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzktOC0xLTEtMA_cbf62a7b-dc56-49aa-9a1f-21fc54d90603">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzExLTItMS0xLTA_4d7990c5-3ea0-4d41-bb1b-0d15ff8bfa6e"
      unitRef="usd">28021000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzExLTQtMS0xLTA_4e6d1a01-4c33-4f53-8bb6-2ef5e1ad23d3"
      unitRef="usd">11664000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzExLTYtMS0xLTA_6e9ab1ac-4ef0-4955-8bd0-639bea0d54b2"
      unitRef="usd">16357000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="if19d9c1a49cc42d7ba1739dcca8e72a7_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTpkZmZkYTRiNjgwMmE0ZTJkYTU5MTZhZGFhYTAxMzQwNS90YWJsZXJhbmdlOmRmZmRhNGI2ODAyYTRlMmRhNTkxNmFkYWFhMDEzNDA1XzExLTgtMS0xLTA_cdd5311d-a77c-49fb-9e3c-c2da0ccd2242">P6Y3M18D</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i11d9ca937cb84bf39ecdc8ec21918a30_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzItMi0xLTEtMA_f5395c52-5604-4f5e-9039-af272d36b38c"
      unitRef="usd">3070000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i11d9ca937cb84bf39ecdc8ec21918a30_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzItNC0xLTEtMA_7fa9b436-be9f-46bc-8883-38fdc39cd4bf"
      unitRef="usd">1296000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i11d9ca937cb84bf39ecdc8ec21918a30_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzItNi0xLTEtMA_ef0c9402-b5bc-4d08-bdeb-00542e8c8f3b"
      unitRef="usd">1774000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i6cbb6f4e7b46444da7ae714fffa8a978_D20190101-20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzItOC0xLTEtMA_4c3ea49f-26a8-4dcc-93c5-4d06f378364c">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="ib7a6cf90754b49568e3786d7efc9c2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzMtMi0xLTEtMA_c079d875-f6bc-4603-b2de-23007d595357"
      unitRef="usd">8330000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="ib7a6cf90754b49568e3786d7efc9c2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzMtNC0xLTEtMA_7a024c58-e4d6-4f0d-b280-cd28ba57b196"
      unitRef="usd">954000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="ib7a6cf90754b49568e3786d7efc9c2cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzMtNi0xLTEtMA_c49917da-3da0-46e4-983a-05a8ad1984a9"
      unitRef="usd">7376000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i0112f48ffb094d65a97b721bd990a5ce_D20190101-20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzMtOC0xLTEtMA_ee4bf289-c620-4334-a7d8-338b150c74ff">P10Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="icdc30ee9208d4bcba77baaec164c7c64_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzQtMi0xLTEtMA_1998346d-6e66-47f1-87e3-0537b5831827"
      unitRef="usd">10541000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="icdc30ee9208d4bcba77baaec164c7c64_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzQtNC0xLTEtMA_aa90008c-b418-4837-a79c-09d91586e2c2"
      unitRef="usd">6074000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="icdc30ee9208d4bcba77baaec164c7c64_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzQtNi0xLTEtMA_508831ac-aa4b-4b21-b73e-261654bd83f2"
      unitRef="usd">4467000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i2d55b6e934984b12997c41e9c938cdf5_D20190101-20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzQtOC0xLTEtMA_915bacb3-a9a2-4481-bf60-52668d3526cf">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="iea177e156ebb487b806bf89240e7c8b8_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzUtMi0xLTEtMA_12fcc19b-512f-469d-81c5-91e85147f30f"
      unitRef="usd">2690000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="iea177e156ebb487b806bf89240e7c8b8_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzUtNC0xLTEtMA_243f9068-09f6-4bca-b67b-2eff39515941"
      unitRef="usd">898000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="iea177e156ebb487b806bf89240e7c8b8_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzUtNi0xLTEtMA_05c27f4d-a47b-4b6b-95af-dc4cf985f124"
      unitRef="usd">1792000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i9045cb2e5d9847a59f9b41c0f9886808_D20190101-20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzUtOC0xLTEtMA_37718e10-8131-47cc-a9f5-14e5ed68e4d0">P6Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="ifb1203c43a37444b9cf6e44eaf3150b6_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzYtMi0xLTEtMA_dd5be60f-ca2c-4cf4-91c1-cef39527b7e5"
      unitRef="usd">680000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="ifb1203c43a37444b9cf6e44eaf3150b6_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzYtNC0xLTEtMA_bac5ea3f-bc0d-4908-b5ab-ca93f3c3710e"
      unitRef="usd">680000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="ifb1203c43a37444b9cf6e44eaf3150b6_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzYtNi0xLTEtMA_d985d8c1-5087-45cd-999f-bdec460fb45d"
      unitRef="usd">0</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i42432e1e809641fe877687b20e2b8dbb_D20190101-20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzYtOC0xLTEtMA_845fcd4e-9077-4a62-a032-353211559794">P3Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i2b0d072d42704847b75ee4249d034bf7_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzctMi0xLTEtMA_a0f774d4-9215-4bf1-b773-cad6b5d6fd2a"
      unitRef="usd">7400000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i2b0d072d42704847b75ee4249d034bf7_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzctNC0xLTEtMA_79f217f3-3bc4-43d1-8206-e55cfb4d03eb"
      unitRef="usd">1484000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i2b0d072d42704847b75ee4249d034bf7_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzctNi0xLTEtMA_b4f36cfd-bae4-473a-84e7-b9205f27eccd"
      unitRef="usd">5916000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i9f56c3879ed84f02b3caba13708ebcd6_D20190101-20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzctOC0xLTEtMA_36806ae8-3d34-4d4a-a05a-16e7225c4320">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i13466a2dc6e748de9f0fb9f156621b59_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzgtMi0xLTEtMA_85cdc8bb-808e-4d15-af70-e79d2d13074d"
      unitRef="usd">301000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i13466a2dc6e748de9f0fb9f156621b59_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzgtNC0xLTEtMA_4e2f0ff4-e6d8-4f3a-99dd-65eaba3d7841"
      unitRef="usd">276000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i13466a2dc6e748de9f0fb9f156621b59_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzgtNi0xLTEtMA_71a2730f-ba81-45f8-8e90-9db0a8eeab30"
      unitRef="usd">25000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i3924e18efe364cd2ace1a364a5089f6e_D20190101-20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzgtOC0xLTEtMA_af60769d-600f-40f9-b60a-5f918327e8c5">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i9834e517f7204327a69ab87c22c7956b_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzktMi0xLTEtMA_dbd20ca7-1ed7-4f9d-8379-3c07f7086547"
      unitRef="usd">252000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i9834e517f7204327a69ab87c22c7956b_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzktNC0xLTEtMA_53000fe6-2904-4206-8a31-ef8e3d3f4d44"
      unitRef="usd">225000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i9834e517f7204327a69ab87c22c7956b_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzktNi0xLTEtMA_7c2b170b-1b14-420a-a513-31a7ba6c50b8"
      unitRef="usd">27000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i3314efe5584b45daa6d6bf3a9252e50f_D20190101-20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzktOC0xLTEtMA_8eb74594-782f-4b1c-812b-9f7b34d7ff1d">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i42c39ba5a870471c851f5256fd74a2a5_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzEwLTItMS0xLTA_6d415961-f787-48c7-9d9c-0c6a7cdb86cc"
      unitRef="usd">470000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i42c39ba5a870471c851f5256fd74a2a5_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzEwLTQtMS0xLTA_60284656-4ad9-409a-a35d-61f20d59d691"
      unitRef="usd">470000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i42c39ba5a870471c851f5256fd74a2a5_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzEwLTYtMS0xLTA_fd0b9218-1b29-4181-bf66-024dbeb3c6e8"
      unitRef="usd">0</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i91c2d3baf0334c13b2c95f446e16f20c_D20190101-20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzEwLTgtMS0xLTA_8b105ce8-f5a5-4239-93e4-0b12dc50ff25">P1Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzExLTItMS0xLTA_2bbb2052-95fd-4b4b-8c91-09d3d5189589"
      unitRef="usd">33734000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzExLTQtMS0xLTA_584a5877-bff1-4b68-ae72-240d03ebe2b4"
      unitRef="usd">12357000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzExLTYtMS0xLTA_784efe58-a9c9-4be8-90a9-52bd3b5a071f"
      unitRef="usd">21377000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i941de9c5c70a4aaa8a5f02dbaee7bf38_D20190101-20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo2ZjQ4OTA1ZmY5Njg0YzBjYjU2OWQ4MDVkOTNlZmMwNy90YWJsZXJhbmdlOjZmNDg5MDVmZjk2ODRjMGNiNTY5ZDgwNWQ5M2VmYzA3XzExLTgtMS0xLTA_a463b342-c82d-4e9f-b22c-432fec3c2c06">P6Y2M12D</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90ZXh0cmVnaW9uOjRiOGQxMWY2MzM5YTQwNDc5Mzc0ODgzZjMyODhkYTVmXzIwMA_95884417-05c1-454c-9867-eb053971095f"
      unitRef="usd">4900000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90ZXh0cmVnaW9uOjRiOGQxMWY2MzM5YTQwNDc5Mzc0ODgzZjMyODhkYTVmXzIwNA_6b491adb-3857-4f01-b200-5d3b80e664a8"
      unitRef="usd">5300000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90ZXh0cmVnaW9uOjRiOGQxMWY2MzM5YTQwNDc5Mzc0ODgzZjMyODhkYTVmXzIxMQ_976bfe6c-e8f5-4ee1-bbe4-8cc5b8dcb668"
      unitRef="usd">1200000</us-gaap:AmortizationOfIntangibleAssets>
    <appf:ScheduleOfFiniteLivedIntangibleAssetsExcludingInternalUseSoftwareDevelopmentFutureAmortizationExpenseTableTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90ZXh0cmVnaW9uOjRiOGQxMWY2MzM5YTQwNDc5Mzc0ODgzZjMyODhkYTVmXzcwOQ_7a90e61c-846c-4323-80f2-77a2bee05697">Future amortization expense with respect to intangible assets is estimated as follows (in thousands): &lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.712%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:82.617%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.463%"/&gt;&lt;td style="width:0.1%"/&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:10pt;font-weight:400;line-height:100%"&gt;Years Ending December 31,&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;/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:10pt;font-weight:400;line-height:100%"&gt;2021&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,646&#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:10pt;font-weight:400;line-height:100%"&gt;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;padding:2px 0 2px 1pt;text-align:right;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;4,605&#160;&lt;/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:10pt;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;padding:2px 0 2px 1pt;text-align:right;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;3,060&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;835&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;833&#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:10pt;font-weight:400;line-height:100%"&gt;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:10pt;font-weight:400;line-height:100%"&gt;2,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;/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:10pt;font-weight:400;line-height:100%"&gt;Total amortization 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-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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;16,357&#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;</appf:ScheduleOfFiniteLivedIntangibleAssetsExcludingInternalUseSoftwareDevelopmentFutureAmortizationExpenseTableTextBlock>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo3OGQ2NDZiZThlNWM0Y2FhYjJmMjIwYzZiNjExNjZiZS90YWJsZXJhbmdlOjc4ZDY0NmJlOGU1YzRjYWFiMmYyMjBjNmI2MTE2NmJlXzEtMi0xLTEtMA_d61d563c-f2a8-4244-9be4-7f72e8f6d0bf"
      unitRef="usd">4646000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo3OGQ2NDZiZThlNWM0Y2FhYjJmMjIwYzZiNjExNjZiZS90YWJsZXJhbmdlOjc4ZDY0NmJlOGU1YzRjYWFiMmYyMjBjNmI2MTE2NmJlXzItMi0xLTEtMA_a1aad312-85b4-40c5-a485-9162c82ec06a"
      unitRef="usd">4605000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo3OGQ2NDZiZThlNWM0Y2FhYjJmMjIwYzZiNjExNjZiZS90YWJsZXJhbmdlOjc4ZDY0NmJlOGU1YzRjYWFiMmYyMjBjNmI2MTE2NmJlXzMtMi0xLTEtMA_6ab2e705-c0fc-45a0-a3dc-1d6ebc9aea7b"
      unitRef="usd">3060000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo3OGQ2NDZiZThlNWM0Y2FhYjJmMjIwYzZiNjExNjZiZS90YWJsZXJhbmdlOjc4ZDY0NmJlOGU1YzRjYWFiMmYyMjBjNmI2MTE2NmJlXzQtMi0xLTEtMA_284713bd-70d4-4963-9b48-cb05d01b1403"
      unitRef="usd">835000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFive
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo3OGQ2NDZiZThlNWM0Y2FhYjJmMjIwYzZiNjExNjZiZS90YWJsZXJhbmdlOjc4ZDY0NmJlOGU1YzRjYWFiMmYyMjBjNmI2MTE2NmJlXzUtMi0xLTEtMA_b8fffe19-b292-4d2c-a5bd-7d569bd54583"
      unitRef="usd">833000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFive>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo3OGQ2NDZiZThlNWM0Y2FhYjJmMjIwYzZiNjExNjZiZS90YWJsZXJhbmdlOjc4ZDY0NmJlOGU1YzRjYWFiMmYyMjBjNmI2MTE2NmJlXzYtMi0xLTEtMA_7b4ec198-1309-421d-ab01-bd33064f7e3d"
      unitRef="usd">2378000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZTo3OGQ2NDZiZThlNWM0Y2FhYjJmMjIwYzZiNjExNjZiZS90YWJsZXJhbmdlOjc4ZDY0NmJlOGU1YzRjYWFiMmYyMjBjNmI2MTE2NmJlXzctMi0xLTEtMA_af2ccbd7-aa1c-4b65-a16e-cfa548346aaa"
      unitRef="usd">16357000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:GoodwillImpairmentLoss
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90ZXh0cmVnaW9uOjRiOGQxMWY2MzM5YTQwNDc5Mzc0ODgzZjMyODhkYTVmXzY1OTcwNjk3Njg2MTg_7b73620f-9f37-41db-affc-752e66b97c6c"
      unitRef="usd">0</us-gaap:GoodwillImpairmentLoss>
    <us-gaap:ScheduleOfGoodwillTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90ZXh0cmVnaW9uOjRiOGQxMWY2MzM5YTQwNDc5Mzc0ODgzZjMyODhkYTVmXzcyNw_72906288-a684-4b3c-a046-5626a16af7df">The change in the carrying amount of goodwill during the twelve months ended December&#160;31, 2020 is as follows (in thousands):&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:82.664%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.518%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.418%"/&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:10pt;font-weight:400;line-height:100%"&gt;Goodwill at December 31, 2019&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;58,425&#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:10pt;font-weight:400;line-height:100%"&gt;Goodwill attributed to MyCase divestiture&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:10pt;font-weight:400;line-height:100%"&gt;(2,278)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Goodwill at 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-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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;56,147&#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:ScheduleOfGoodwillTextBlock>
    <us-gaap:Goodwill
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZToxMDgyMDY2MWEwNzU0MzgwOTg4ODE0NjFmNzFmMzNiZi90YWJsZXJhbmdlOjEwODIwNjYxYTA3NTQzODA5ODg4MTQ2MWY3MWYzM2JmXzAtMi0xLTEtMA_cbe9e6a6-a50d-4534-9316-28778f1bbe24"
      unitRef="usd">58425000</us-gaap:Goodwill>
    <us-gaap:GoodwillAcquiredDuringPeriod
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZToxMDgyMDY2MWEwNzU0MzgwOTg4ODE0NjFmNzFmMzNiZi90YWJsZXJhbmdlOjEwODIwNjYxYTA3NTQzODA5ODg4MTQ2MWY3MWYzM2JmXzEtMi0xLTEtMA_fc485840-8a99-451d-86b7-1284f6ac3730"
      unitRef="usd">2278000</us-gaap:GoodwillAcquiredDuringPeriod>
    <us-gaap:Goodwill
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMTgvZnJhZzo0YjhkMTFmNjMzOWE0MDQ3OTM3NDg4M2YzMjg4ZGE1Zi90YWJsZToxMDgyMDY2MWEwNzU0MzgwOTg4ODE0NjFmNzFmMzNiZi90YWJsZXJhbmdlOjEwODIwNjYxYTA3NTQzODA5ODg4MTQ2MWY3MWYzM2JmXzItMi0xLTEtMA_4f413633-b676-412c-827e-8692f4371078"
      unitRef="usd">56147000</us-gaap:Goodwill>
    <us-gaap:CompensationRelatedCostsGeneralTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNjk0L2ZyYWc6MTIwYzQyOWNkZGVlNDQ2NjljMDFhM2RmOTI3NmY2NTEvdGV4dHJlZ2lvbjoxMjBjNDI5Y2RkZWU0NDY2OWMwMWEzZGY5Mjc2ZjY1MV83MTQ2ODI1NTgwNzcw_e7f4f579-3f2c-42c3-9f06-0c6674f62a70">Accrued Employee Expenses&lt;div style="margin-bottom:6pt;margin-top:10pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accrued employee expenses consisted of the following (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:10pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:69.975%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.381%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.708%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.526%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.710%"/&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 #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;2020&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:8pt;font-weight:700;line-height:100%"&gt;2019&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Accrued vacation&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;8,277&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;5,554&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Accrued bonuses&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:10pt;font-weight:400;line-height:100%"&gt;5,638&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;3,872&#160;&lt;/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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Accrued commissions&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:10pt;font-weight:400;line-height:100%"&gt;1,995&#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:10pt;font-weight:400;line-height:100%"&gt;1,860&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Accrued payroll&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:10pt;font-weight:400;line-height:100%"&gt;1,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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;5,202&#160;&lt;/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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Accrued payroll taxes and other&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:10pt;font-weight:400;line-height:100%"&gt;1,057&#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:10pt;font-weight:400;line-height:100%"&gt;1,270&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total accrued employee expenses&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: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:10pt;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: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:10pt;font-weight:400;line-height:100%"&gt;18,888&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;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 #000;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:10pt;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: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:10pt;font-weight:400;line-height:100%"&gt;17,758&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;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:CompensationRelatedCostsGeneralTextBlock>
    <appf:ScheduleOfAccruedEmployeeExpensesTableTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNjk0L2ZyYWc6MTIwYzQyOWNkZGVlNDQ2NjljMDFhM2RmOTI3NmY2NTEvdGV4dHJlZ2lvbjoxMjBjNDI5Y2RkZWU0NDY2OWMwMWEzZGY5Mjc2ZjY1MV83MTQ2ODI1NTgwNzcx_02d3e41b-fbd7-425e-8fb7-7efdbae7203e">&lt;div style="margin-bottom:6pt;margin-top:10pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accrued employee expenses consisted of the following (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:10pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:69.975%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.381%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.708%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.526%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.710%"/&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 #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;2020&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:8pt;font-weight:700;line-height:100%"&gt;2019&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Accrued vacation&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;8,277&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;5,554&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Accrued bonuses&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:10pt;font-weight:400;line-height:100%"&gt;5,638&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;3,872&#160;&lt;/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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Accrued commissions&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:10pt;font-weight:400;line-height:100%"&gt;1,995&#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:10pt;font-weight:400;line-height:100%"&gt;1,860&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Accrued payroll&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:10pt;font-weight:400;line-height:100%"&gt;1,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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;5,202&#160;&lt;/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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Accrued payroll taxes and other&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:10pt;font-weight:400;line-height:100%"&gt;1,057&#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:10pt;font-weight:400;line-height:100%"&gt;1,270&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total accrued employee expenses&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: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:10pt;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: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:10pt;font-weight:400;line-height:100%"&gt;18,888&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;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 #000;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:10pt;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: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:10pt;font-weight:400;line-height:100%"&gt;17,758&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;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;</appf:ScheduleOfAccruedEmployeeExpensesTableTextBlock>
    <us-gaap:AccruedVacationCurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNjk0L2ZyYWc6MTIwYzQyOWNkZGVlNDQ2NjljMDFhM2RmOTI3NmY2NTEvdGFibGU6YjY5OTk0MTBlMzYzNGNlOWJmNTdmOTU5NDU0MDczMGIvdGFibGVyYW5nZTpiNjk5OTQxMGUzNjM0Y2U5YmY1N2Y5NTk0NTQwNzMwYl8xLTItMS0xLTc3NDE_aff9d23e-a3da-4bda-90f9-a5bbde615b7e"
      unitRef="usd">8277000</us-gaap:AccruedVacationCurrent>
    <us-gaap:AccruedVacationCurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNjk0L2ZyYWc6MTIwYzQyOWNkZGVlNDQ2NjljMDFhM2RmOTI3NmY2NTEvdGFibGU6YjY5OTk0MTBlMzYzNGNlOWJmNTdmOTU5NDU0MDczMGIvdGFibGVyYW5nZTpiNjk5OTQxMGUzNjM0Y2U5YmY1N2Y5NTk0NTQwNzMwYl8xLTQtMS0xLTc3NDE_c76240e5-1985-4b1a-a962-1a5676536aa2"
      unitRef="usd">5554000</us-gaap:AccruedVacationCurrent>
    <us-gaap:AccruedBonusesCurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNjk0L2ZyYWc6MTIwYzQyOWNkZGVlNDQ2NjljMDFhM2RmOTI3NmY2NTEvdGFibGU6YjY5OTk0MTBlMzYzNGNlOWJmNTdmOTU5NDU0MDczMGIvdGFibGVyYW5nZTpiNjk5OTQxMGUzNjM0Y2U5YmY1N2Y5NTk0NTQwNzMwYl8yLTItMS0xLTc3NDE_38ec0906-563f-4d1f-bcf8-d25a658cb644"
      unitRef="usd">5638000</us-gaap:AccruedBonusesCurrent>
    <us-gaap:AccruedBonusesCurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNjk0L2ZyYWc6MTIwYzQyOWNkZGVlNDQ2NjljMDFhM2RmOTI3NmY2NTEvdGFibGU6YjY5OTk0MTBlMzYzNGNlOWJmNTdmOTU5NDU0MDczMGIvdGFibGVyYW5nZTpiNjk5OTQxMGUzNjM0Y2U5YmY1N2Y5NTk0NTQwNzMwYl8yLTQtMS0xLTc3NDE_073e5ae3-e71a-41a4-ada6-93fc1369841d"
      unitRef="usd">3872000</us-gaap:AccruedBonusesCurrent>
    <us-gaap:AccruedSalesCommissionCurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNjk0L2ZyYWc6MTIwYzQyOWNkZGVlNDQ2NjljMDFhM2RmOTI3NmY2NTEvdGFibGU6YjY5OTk0MTBlMzYzNGNlOWJmNTdmOTU5NDU0MDczMGIvdGFibGVyYW5nZTpiNjk5OTQxMGUzNjM0Y2U5YmY1N2Y5NTk0NTQwNzMwYl8zLTItMS0xLTc3NDE_07f735b8-2952-467d-8fc4-25462b5e5c57"
      unitRef="usd">1995000</us-gaap:AccruedSalesCommissionCurrent>
    <us-gaap:AccruedSalesCommissionCurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNjk0L2ZyYWc6MTIwYzQyOWNkZGVlNDQ2NjljMDFhM2RmOTI3NmY2NTEvdGFibGU6YjY5OTk0MTBlMzYzNGNlOWJmNTdmOTU5NDU0MDczMGIvdGFibGVyYW5nZTpiNjk5OTQxMGUzNjM0Y2U5YmY1N2Y5NTk0NTQwNzMwYl8zLTQtMS0xLTc3NDE_8508a3a6-4533-490b-9b33-2138376c9211"
      unitRef="usd">1860000</us-gaap:AccruedSalesCommissionCurrent>
    <us-gaap:AccruedSalariesCurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNjk0L2ZyYWc6MTIwYzQyOWNkZGVlNDQ2NjljMDFhM2RmOTI3NmY2NTEvdGFibGU6YjY5OTk0MTBlMzYzNGNlOWJmNTdmOTU5NDU0MDczMGIvdGFibGVyYW5nZTpiNjk5OTQxMGUzNjM0Y2U5YmY1N2Y5NTk0NTQwNzMwYl80LTItMS0xLTc3NDE_a62e10b4-1221-4fc8-9859-42cb02331940"
      unitRef="usd">1921000</us-gaap:AccruedSalariesCurrent>
    <us-gaap:AccruedSalariesCurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNjk0L2ZyYWc6MTIwYzQyOWNkZGVlNDQ2NjljMDFhM2RmOTI3NmY2NTEvdGFibGU6YjY5OTk0MTBlMzYzNGNlOWJmNTdmOTU5NDU0MDczMGIvdGFibGVyYW5nZTpiNjk5OTQxMGUzNjM0Y2U5YmY1N2Y5NTk0NTQwNzMwYl80LTQtMS0xLTc3NDE_f3b5157a-1e45-49e1-b344-5cb33ad28a70"
      unitRef="usd">5202000</us-gaap:AccruedSalariesCurrent>
    <us-gaap:AccruedPayrollTaxesCurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNjk0L2ZyYWc6MTIwYzQyOWNkZGVlNDQ2NjljMDFhM2RmOTI3NmY2NTEvdGFibGU6YjY5OTk0MTBlMzYzNGNlOWJmNTdmOTU5NDU0MDczMGIvdGFibGVyYW5nZTpiNjk5OTQxMGUzNjM0Y2U5YmY1N2Y5NTk0NTQwNzMwYl82LTItMS0xLTc5MzQ_fdfefeac-6713-4a83-ac35-826a3469f8b1"
      unitRef="usd">1057000</us-gaap:AccruedPayrollTaxesCurrent>
    <us-gaap:AccruedPayrollTaxesCurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNjk0L2ZyYWc6MTIwYzQyOWNkZGVlNDQ2NjljMDFhM2RmOTI3NmY2NTEvdGFibGU6YjY5OTk0MTBlMzYzNGNlOWJmNTdmOTU5NDU0MDczMGIvdGFibGVyYW5nZTpiNjk5OTQxMGUzNjM0Y2U5YmY1N2Y5NTk0NTQwNzMwYl82LTQtMS0xLTc5MzQ_1a678ac3-922f-425c-8573-16e868c761d0"
      unitRef="usd">1270000</us-gaap:AccruedPayrollTaxesCurrent>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNjk0L2ZyYWc6MTIwYzQyOWNkZGVlNDQ2NjljMDFhM2RmOTI3NmY2NTEvdGFibGU6YjY5OTk0MTBlMzYzNGNlOWJmNTdmOTU5NDU0MDczMGIvdGFibGVyYW5nZTpiNjk5OTQxMGUzNjM0Y2U5YmY1N2Y5NTk0NTQwNzMwYl81LTItMS0xLTc3NDE_46e005e7-a5b4-4527-9146-6a7f7cf10dad"
      unitRef="usd">18888000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNjk0L2ZyYWc6MTIwYzQyOWNkZGVlNDQ2NjljMDFhM2RmOTI3NmY2NTEvdGFibGU6YjY5OTk0MTBlMzYzNGNlOWJmNTdmOTU5NDU0MDczMGIvdGFibGVyYW5nZTpiNjk5OTQxMGUzNjM0Y2U5YmY1N2Y5NTk0NTQwNzMwYl81LTQtMS0xLTc3NDE_43d0f02f-343a-402b-acae-c4716a427380"
      unitRef="usd">17758000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <us-gaap:LesseeOperatingLeasesTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90ZXh0cmVnaW9uOjRmZWFmMzc3ZWMxODRiNDJiOGMwMjllYjhlMTQ2NDE0XzI3MDc_9dbd3aaa-4292-4290-a66d-e480e354c15e">Leases&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating leases for our corporate offices have remaining lease terms ranging from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90ZXh0cmVnaW9uOjRmZWFmMzc3ZWMxODRiNDJiOGMwMjllYjhlMTQ2NDE0XzY1OTcwNjk3Njk0Mzg_e13e4af0-ccec-4e1a-a2d9-ac59fdda846f"&gt;one&lt;/span&gt; to eleven years, some of which include options to extend the leases for up to ten years. These options to extend have not been recognized as part of our operating lease right-of-use assets and lease liabilities as it is not reasonably certain that we will exercise these options. Our lease agreements do not contain any residual value guarantees or material restrictive covenants. We have lease agreements with lease and non-lease components, which we have elected to combine for all asset classes. Certain leases contain provisions for property-related costs that are variable in nature for which the Company is responsible, including common area maintenance. Operating lease cost associated with our operating leases for the twelve months ended December&#160;31, 2020 and 2019 was $5.3 million and $5.1&#160;million, respectively. Variable lease cost associated with our operating leases for the twelve months ended December&#160;31, 2020 and 2019 was $1.4&#160;million and $1.1&#160;million, respectively. We recorded rent expense of $2.6&#160;million for the year ended December&#160;31, 2018. &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:120%"&gt;&#160;&#160;&#160;&#160;Lease-related assets and liabilities were as follows (in thousands, except years and %): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.391%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.788%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.791%"/&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="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="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;2020&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:8pt;font-weight:700;line-height:100%"&gt;2019&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:10pt;font-weight:700;line-height:100%"&gt;Assets&lt;/span&gt;&lt;/td&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;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;Prepaid expenses and other current assets&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;3,972&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;3,908&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Operating lease right-of-use assets&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:10pt;font-weight:400;line-height:100%"&gt;30,561&#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:10pt;font-weight:400;line-height:100%"&gt;27,803&#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 style="height:15pt"&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;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;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;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;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;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTo5Y2E5ZmRlZWVmMDA0ZDBhYWU2NjFlYmEwYzExZTFkMC90YWJsZXJhbmdlOjljYTlmZGVlZWYwMDRkMGFhZTY2MWViYTBjMTFlMWQwXzUtMC0xLTEtMA_bdd3abe6-1716-4452-b1db-b9e30870ccde"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTo5Y2E5ZmRlZWVmMDA0ZDBhYWU2NjFlYmEwYzExZTFkMC90YWJsZXJhbmdlOjljYTlmZGVlZWYwMDRkMGFhZTY2MWViYTBjMTFlMWQwXzUtMC0xLTEtMA_ebaea08b-e067-4426-8fbb-59b570f8f199"&gt;Other current liabilities&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;1,845&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;2,826&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Operating lease liabilities&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:10pt;font-weight:400;line-height:100%"&gt;40,146&#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:10pt;font-weight:400;line-height:100%"&gt;33,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;/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:10pt;font-weight:400;line-height:100%"&gt;Total lease liabilities&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;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:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;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:10pt;font-weight:400;line-height:100%"&gt;41,991&#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 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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;36,138&#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:15pt"&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 #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:3pt double #000000;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:10pt;font-weight:400;line-height:100%"&gt;Weighted-average remaining lease term (years)&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;10.8&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:10pt;font-weight:400;line-height:100%"&gt;10.6&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:10pt;font-weight:400;line-height:100%"&gt;Weighted-average discount rate&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:10pt;font-weight:400;line-height:100%"&gt;4.5&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4.7&#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:10pt;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:justify"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#160;&#160;&#160;&#160;Future minimum lease payments under non-cancellable leases as of December&#160;31, 2020 were as follows (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:84.990%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.810%"/&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:10pt;font-weight:400;line-height:100%"&gt;Years ending December 31, &lt;/span&gt;&lt;/td&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;text-align:left;vertical-align:bottom"&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2021&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:100%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;(1)&lt;/span&gt;&lt;/div&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(915)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;2022&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:10pt;font-weight:400;line-height:100%"&gt;4,544&#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:10pt;font-weight:400;line-height:100%"&gt;2023&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:10pt;font-weight:400;line-height:100%"&gt;4,845&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;2024&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:10pt;font-weight:400;line-height:100%"&gt;4,797&#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:10pt;font-weight:400;line-height:100%"&gt;2025&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:10pt;font-weight:400;line-height:100%"&gt;4,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;/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:10pt;font-weight:400;line-height:100%"&gt;Thereafter&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:10pt;font-weight:400;line-height:100%"&gt;32,040&#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:10pt;font-weight:400;line-height:100%"&gt;Total future minimum lease payments&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;49,982&#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:10pt;font-weight:400;line-height:100%"&gt;Less: imputed interest&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:10pt;font-weight:400;line-height:100%"&gt;(11,963)&lt;/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;div style="padding-left:11.25pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:100%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;(2)&lt;/span&gt;&lt;/div&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;38,019&#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="text-align:justify"&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;(1) &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;Future minimum lease payments for the year ending December 31, 2021 are presented net of tenant improvement allowances of $4.8 million.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify"&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;(2) &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;Total future minimum lease payments include the current portion of lease liabilities recorded in &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;Prepaid expenses and other current assets&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 $4.0 million on our Consolidated Balance Sheets, which relates to certain of our leases for which the lease incentives to be received exceed the minimum lease payments to be paid over the next twelve months. &lt;/span&gt;&lt;/div&gt;On December 17, 2020, we entered into a lease amendment for 1707 N Plano Road, Richardson, Texas. The amendment expands the current leased space with three additional suites totaling approximately 23,833 square feet and extends the lease term to March 31, 2032. The total commitment under this lease is $11.6&#160;million.</us-gaap:LesseeOperatingLeasesTextBlock>
    <us-gaap:LesseeOperatingLeaseTermOfContract
      contextRef="i8c44c9d704f94577a58842cd80552570_I20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90ZXh0cmVnaW9uOjRmZWFmMzc3ZWMxODRiNDJiOGMwMjllYjhlMTQ2NDE0XzY1OTcwNjk3Njk0Mzk_bcef428a-450a-4770-a120-1d061ddeaa9e">P11Y</us-gaap:LesseeOperatingLeaseTermOfContract>
    <us-gaap:LessorOperatingLeaseRenewalTerm
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90ZXh0cmVnaW9uOjRmZWFmMzc3ZWMxODRiNDJiOGMwMjllYjhlMTQ2NDE0XzcxNDY4MjU1ODYwNjc_0adb02aa-4c6b-41d4-9941-6a62395ea11b">P10Y</us-gaap:LessorOperatingLeaseRenewalTerm>
    <us-gaap:OperatingLeaseCost
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90ZXh0cmVnaW9uOjRmZWFmMzc3ZWMxODRiNDJiOGMwMjllYjhlMTQ2NDE0XzcwNg_0b7955e0-f2dc-42d8-96d8-fb88274ee836"
      unitRef="usd">5300000</us-gaap:OperatingLeaseCost>
    <us-gaap:OperatingLeaseCost
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90ZXh0cmVnaW9uOjRmZWFmMzc3ZWMxODRiNDJiOGMwMjllYjhlMTQ2NDE0XzI3NDg3NzkwNzM1OTU_5cf99678-c58e-4308-a3c1-462ee705344f"
      unitRef="usd">5100000</us-gaap:OperatingLeaseCost>
    <us-gaap:VariableLeaseCost
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90ZXh0cmVnaW9uOjRmZWFmMzc3ZWMxODRiNDJiOGMwMjllYjhlMTQ2NDE0XzY1OTcwNjk3NzI3MTM_bded6030-9841-439f-8dae-38f707d821d9"
      unitRef="usd">1400000</us-gaap:VariableLeaseCost>
    <us-gaap:VariableLeaseCost
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90ZXh0cmVnaW9uOjRmZWFmMzc3ZWMxODRiNDJiOGMwMjllYjhlMTQ2NDE0XzY1OTcwNjk3NzI3Mjc_6e7232fb-b783-4c5b-bf25-ec486c559fd7"
      unitRef="usd">1100000</us-gaap:VariableLeaseCost>
    <us-gaap:LeaseAndRentalExpense
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90ZXh0cmVnaW9uOjRmZWFmMzc3ZWMxODRiNDJiOGMwMjllYjhlMTQ2NDE0XzI3NDg3NzkwNzM2MTA_1114fdc8-8966-4123-885d-0df132b8f1c8"
      unitRef="usd">2600000</us-gaap:LeaseAndRentalExpense>
    <us-gaap:LeaseCostTableTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90ZXh0cmVnaW9uOjRmZWFmMzc3ZWMxODRiNDJiOGMwMjllYjhlMTQ2NDE0XzI3MDg_04c4cfc1-176e-4675-9f6e-c9d330673198">Lease-related assets and liabilities were as follows (in thousands, except years and %): &lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.391%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.788%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.791%"/&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="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="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;2020&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:8pt;font-weight:700;line-height:100%"&gt;2019&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:10pt;font-weight:700;line-height:100%"&gt;Assets&lt;/span&gt;&lt;/td&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;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;Prepaid expenses and other current assets&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;3,972&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;3,908&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Operating lease right-of-use assets&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:10pt;font-weight:400;line-height:100%"&gt;30,561&#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:10pt;font-weight:400;line-height:100%"&gt;27,803&#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 style="height:15pt"&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;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;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;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;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;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTo5Y2E5ZmRlZWVmMDA0ZDBhYWU2NjFlYmEwYzExZTFkMC90YWJsZXJhbmdlOjljYTlmZGVlZWYwMDRkMGFhZTY2MWViYTBjMTFlMWQwXzUtMC0xLTEtMA_bdd3abe6-1716-4452-b1db-b9e30870ccde"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTo5Y2E5ZmRlZWVmMDA0ZDBhYWU2NjFlYmEwYzExZTFkMC90YWJsZXJhbmdlOjljYTlmZGVlZWYwMDRkMGFhZTY2MWViYTBjMTFlMWQwXzUtMC0xLTEtMA_ebaea08b-e067-4426-8fbb-59b570f8f199"&gt;Other current liabilities&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;1,845&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;2,826&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Operating lease liabilities&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:10pt;font-weight:400;line-height:100%"&gt;40,146&#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:10pt;font-weight:400;line-height:100%"&gt;33,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;/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:10pt;font-weight:400;line-height:100%"&gt;Total lease liabilities&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;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:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;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:10pt;font-weight:400;line-height:100%"&gt;41,991&#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 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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;36,138&#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:15pt"&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 #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:3pt double #000000;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:10pt;font-weight:400;line-height:100%"&gt;Weighted-average remaining lease term (years)&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;10.8&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:10pt;font-weight:400;line-height:100%"&gt;10.6&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:10pt;font-weight:400;line-height:100%"&gt;Weighted-average discount rate&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:10pt;font-weight:400;line-height:100%"&gt;4.5&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4.7&#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:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</us-gaap:LeaseCostTableTextBlock>
    <appf:OperatingLeasePrepaidExpensesAndOtherCurrentAssets
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTo5Y2E5ZmRlZWVmMDA0ZDBhYWU2NjFlYmEwYzExZTFkMC90YWJsZXJhbmdlOjljYTlmZGVlZWYwMDRkMGFhZTY2MWViYTBjMTFlMWQwXzEtMS0xLTEtMA_6e464dc7-523f-496a-8122-bdf0bbadda15"
      unitRef="usd">3972000</appf:OperatingLeasePrepaidExpensesAndOtherCurrentAssets>
    <appf:OperatingLeasePrepaidExpensesAndOtherCurrentAssets
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTo5Y2E5ZmRlZWVmMDA0ZDBhYWU2NjFlYmEwYzExZTFkMC90YWJsZXJhbmdlOjljYTlmZGVlZWYwMDRkMGFhZTY2MWViYTBjMTFlMWQwXzEtMi0xLTEtMzA3NA_598822dc-9879-456f-a4fe-74c51511a4fb"
      unitRef="usd">3908000</appf:OperatingLeasePrepaidExpensesAndOtherCurrentAssets>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTo5Y2E5ZmRlZWVmMDA0ZDBhYWU2NjFlYmEwYzExZTFkMC90YWJsZXJhbmdlOjljYTlmZGVlZWYwMDRkMGFhZTY2MWViYTBjMTFlMWQwXzItMS0xLTEtMA_871c2392-8887-4bd0-b2f8-ecfe77a6171a"
      unitRef="usd">30561000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTo5Y2E5ZmRlZWVmMDA0ZDBhYWU2NjFlYmEwYzExZTFkMC90YWJsZXJhbmdlOjljYTlmZGVlZWYwMDRkMGFhZTY2MWViYTBjMTFlMWQwXzItMi0xLTEtMzA3NA_a9e58201-7976-40a0-b96b-7fe22f3f5455"
      unitRef="usd">27803000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTo5Y2E5ZmRlZWVmMDA0ZDBhYWU2NjFlYmEwYzExZTFkMC90YWJsZXJhbmdlOjljYTlmZGVlZWYwMDRkMGFhZTY2MWViYTBjMTFlMWQwXzUtMS0xLTEtMA_c2b41abe-8eeb-40c0-9ef8-6e9230fcb1bf"
      unitRef="usd">1845000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTo5Y2E5ZmRlZWVmMDA0ZDBhYWU2NjFlYmEwYzExZTFkMC90YWJsZXJhbmdlOjljYTlmZGVlZWYwMDRkMGFhZTY2MWViYTBjMTFlMWQwXzUtMi0xLTEtMzA3Nw_b059aa22-5c4d-429e-9f9b-2638859b761d"
      unitRef="usd">2826000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTo5Y2E5ZmRlZWVmMDA0ZDBhYWU2NjFlYmEwYzExZTFkMC90YWJsZXJhbmdlOjljYTlmZGVlZWYwMDRkMGFhZTY2MWViYTBjMTFlMWQwXzYtMS0xLTEtMA_e54fbb30-92cb-4037-8bb4-c49bf4a662af"
      unitRef="usd">40146000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTo5Y2E5ZmRlZWVmMDA0ZDBhYWU2NjFlYmEwYzExZTFkMC90YWJsZXJhbmdlOjljYTlmZGVlZWYwMDRkMGFhZTY2MWViYTBjMTFlMWQwXzYtMi0xLTEtMzA3Nw_b6bebe5f-e501-4282-83dd-9fc7f6d4333f"
      unitRef="usd">33312000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiability
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTo5Y2E5ZmRlZWVmMDA0ZDBhYWU2NjFlYmEwYzExZTFkMC90YWJsZXJhbmdlOjljYTlmZGVlZWYwMDRkMGFhZTY2MWViYTBjMTFlMWQwXzctMS0xLTEtMA_dd24f3dd-574a-4525-9010-ad58a362dbfe"
      unitRef="usd">41991000</us-gaap:OperatingLeaseLiability>
    <us-gaap:OperatingLeaseLiability
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTo5Y2E5ZmRlZWVmMDA0ZDBhYWU2NjFlYmEwYzExZTFkMC90YWJsZXJhbmdlOjljYTlmZGVlZWYwMDRkMGFhZTY2MWViYTBjMTFlMWQwXzctMi0xLTEtMzA3Nw_d3914c13-a4eb-4031-9968-39441b28f006"
      unitRef="usd">36138000</us-gaap:OperatingLeaseLiability>
    <us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTo5Y2E5ZmRlZWVmMDA0ZDBhYWU2NjFlYmEwYzExZTFkMC90YWJsZXJhbmdlOjljYTlmZGVlZWYwMDRkMGFhZTY2MWViYTBjMTFlMWQwXzktMS0xLTEtMA_44fe0517-867c-4c22-8f2d-1afa07b35605">P10Y9M18D</us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1>
    <us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTo5Y2E5ZmRlZWVmMDA0ZDBhYWU2NjFlYmEwYzExZTFkMC90YWJsZXJhbmdlOjljYTlmZGVlZWYwMDRkMGFhZTY2MWViYTBjMTFlMWQwXzktMy0xLTEtNjYyMA_22019d94-498e-4e6f-af87-794b517636b0">P10Y7M6D</us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1>
    <us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTo5Y2E5ZmRlZWVmMDA0ZDBhYWU2NjFlYmEwYzExZTFkMC90YWJsZXJhbmdlOjljYTlmZGVlZWYwMDRkMGFhZTY2MWViYTBjMTFlMWQwXzEwLTEtMS0xLTA_771d44ca-42c1-409d-a9a9-38c11fffaad4"
      unitRef="number">0.045</us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTo5Y2E5ZmRlZWVmMDA0ZDBhYWU2NjFlYmEwYzExZTFkMC90YWJsZXJhbmdlOjljYTlmZGVlZWYwMDRkMGFhZTY2MWViYTBjMTFlMWQwXzEwLTMtMS0xLTY2MjA_4d1b52b3-4f45-40a7-a028-b906a3b94d7e"
      unitRef="number">0.047</us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90ZXh0cmVnaW9uOjRmZWFmMzc3ZWMxODRiNDJiOGMwMjllYjhlMTQ2NDE0XzI3MDk_e45b21be-e864-46fd-8a3d-6d0f0ffb202b">Future minimum lease payments under non-cancellable leases as of December&#160;31, 2020 were as follows (in thousands): &lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:84.990%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.810%"/&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:10pt;font-weight:400;line-height:100%"&gt;Years ending December 31, &lt;/span&gt;&lt;/td&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;text-align:left;vertical-align:bottom"&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2021&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:100%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;(1)&lt;/span&gt;&lt;/div&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(915)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;2022&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:10pt;font-weight:400;line-height:100%"&gt;4,544&#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:10pt;font-weight:400;line-height:100%"&gt;2023&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:10pt;font-weight:400;line-height:100%"&gt;4,845&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;2024&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:10pt;font-weight:400;line-height:100%"&gt;4,797&#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:10pt;font-weight:400;line-height:100%"&gt;2025&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:10pt;font-weight:400;line-height:100%"&gt;4,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;/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:10pt;font-weight:400;line-height:100%"&gt;Thereafter&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:10pt;font-weight:400;line-height:100%"&gt;32,040&#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:10pt;font-weight:400;line-height:100%"&gt;Total future minimum lease payments&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;49,982&#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:10pt;font-weight:400;line-height:100%"&gt;Less: imputed interest&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:10pt;font-weight:400;line-height:100%"&gt;(11,963)&lt;/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;div style="padding-left:11.25pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:100%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;(2)&lt;/span&gt;&lt;/div&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;38,019&#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="text-align:justify"&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;(1) &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;Future minimum lease payments for the year ending December 31, 2021 are presented net of tenant improvement allowances of $4.8 million.&lt;/span&gt;&lt;/div&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;(2) &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;Total future minimum lease payments include the current portion of lease liabilities recorded in &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;Prepaid expenses and other current assets&lt;/span&gt; of $4.0 million on our Consolidated Balance Sheets, which relates to certain of our leases for which the lease incentives to be received exceed the minimum lease payments to be paid over the next twelve months.</us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTpiNGZjNzQwYjk5Yjk0OGVlYjJmOGY1YWEwZGUwNDk3OS90YWJsZXJhbmdlOmI0ZmM3NDBiOTliOTQ4ZWViMmY4ZjVhYTBkZTA0OTc5XzEtMS0xLTEtMA_caf96818-17c6-42ae-92f8-7ac7f3a88bd4"
      unitRef="usd">-915000000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTpiNGZjNzQwYjk5Yjk0OGVlYjJmOGY1YWEwZGUwNDk3OS90YWJsZXJhbmdlOmI0ZmM3NDBiOTliOTQ4ZWViMmY4ZjVhYTBkZTA0OTc5XzItMS0xLTEtMA_0cb69e1d-88c1-412a-8adf-783173cbf411"
      unitRef="usd">4544000000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTpiNGZjNzQwYjk5Yjk0OGVlYjJmOGY1YWEwZGUwNDk3OS90YWJsZXJhbmdlOmI0ZmM3NDBiOTliOTQ4ZWViMmY4ZjVhYTBkZTA0OTc5XzMtMS0xLTEtMA_950641f2-9e39-4399-a419-ac26b60ee139"
      unitRef="usd">4845000000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTpiNGZjNzQwYjk5Yjk0OGVlYjJmOGY1YWEwZGUwNDk3OS90YWJsZXJhbmdlOmI0ZmM3NDBiOTliOTQ4ZWViMmY4ZjVhYTBkZTA0OTc5XzQtMS0xLTEtMA_07651143-de88-43c9-8052-b6148c7a6c3e"
      unitRef="usd">4797000000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTpiNGZjNzQwYjk5Yjk0OGVlYjJmOGY1YWEwZGUwNDk3OS90YWJsZXJhbmdlOmI0ZmM3NDBiOTliOTQ4ZWViMmY4ZjVhYTBkZTA0OTc5XzUtMS0xLTEtMA_ca9c1243-b752-4804-8081-1e008db890af"
      unitRef="usd">4671000000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTpiNGZjNzQwYjk5Yjk0OGVlYjJmOGY1YWEwZGUwNDk3OS90YWJsZXJhbmdlOmI0ZmM3NDBiOTliOTQ4ZWViMmY4ZjVhYTBkZTA0OTc5XzYtMS0xLTEtMA_0fc29daa-3b70-49c7-b4dd-85b5e4caecc6"
      unitRef="usd">32040000000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTpiNGZjNzQwYjk5Yjk0OGVlYjJmOGY1YWEwZGUwNDk3OS90YWJsZXJhbmdlOmI0ZmM3NDBiOTliOTQ4ZWViMmY4ZjVhYTBkZTA0OTc5XzctMS0xLTEtMA_6eb69b08-513b-4956-b0a5-378c224d7c6e"
      unitRef="usd">49982000000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue>
    <us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTpiNGZjNzQwYjk5Yjk0OGVlYjJmOGY1YWEwZGUwNDk3OS90YWJsZXJhbmdlOmI0ZmM3NDBiOTliOTQ4ZWViMmY4ZjVhYTBkZTA0OTc5XzgtMS0xLTEtMA_6416c397-c1e8-4388-a518-a48381578b24"
      unitRef="usd">11963000000</us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount>
    <appf:LesseeOperatingLeaseLiabilityNetOfCurrentPortion
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90YWJsZTpiNGZjNzQwYjk5Yjk0OGVlYjJmOGY1YWEwZGUwNDk3OS90YWJsZXJhbmdlOmI0ZmM3NDBiOTliOTQ4ZWViMmY4ZjVhYTBkZTA0OTc5XzktMS0xLTEtMA_48d16d53-67de-4a39-be28-0a20e3580e89"
      unitRef="usd">38019000000</appf:LesseeOperatingLeaseLiabilityNetOfCurrentPortion>
    <appf:TenantImprovementAllowance
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90ZXh0cmVnaW9uOjRmZWFmMzc3ZWMxODRiNDJiOGMwMjllYjhlMTQ2NDE0XzExNDU_799dbd7d-5f72-4b7f-8102-1457b2840665"
      unitRef="usd">4800000</appf:TenantImprovementAllowance>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i1839549352ce40bb80d59575701cc727_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90ZXh0cmVnaW9uOjRmZWFmMzc3ZWMxODRiNDJiOGMwMjllYjhlMTQ2NDE0XzEzMDk_e2c9b5da-50c5-4f09-a878-4ef749aa19fc"
      unitRef="usd">4000000.0</us-gaap:OperatingLeaseLiabilityCurrent>
    <appf:LesseeOperatingLeaseSquareFeetOfLeasedArea
      contextRef="iaf40a4a4574a4692a96d0a3775c9bce2_D20201217-20201217"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90ZXh0cmVnaW9uOjRmZWFmMzc3ZWMxODRiNDJiOGMwMjllYjhlMTQ2NDE0XzcxNDY4MjU1ODYwODU_797c3a0f-84d1-4e64-844e-60a0b05bf34f"
      unitRef="sqft">23833</appf:LesseeOperatingLeaseSquareFeetOfLeasedArea>
    <us-gaap:OperatingLeaseLiability
      contextRef="ib579298b6d534de4a508f67a6eb46121_I20201217"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjEvZnJhZzo0ZmVhZjM3N2VjMTg0YjQyYjhjMDI5ZWI4ZTE0NjQxNC90ZXh0cmVnaW9uOjRmZWFmMzc3ZWMxODRiNDJiOGMwMjllYjhlMTQ2NDE0XzI3NDg3NzkwNzI3MDc_911a71dd-c533-4a6f-99fc-447a1869ebd0"
      unitRef="usd">11600000</us-gaap:OperatingLeaseLiability>
    <us-gaap:LongTermDebtTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzUwMTk_8cb95b98-f31d-477f-866f-dfd10bb6c8f4">Long-term Debt&lt;div style="margin-bottom:6pt;margin-top:10pt;text-indent:36pt"&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 Agreement&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;On December 24, 2018, we entered into Amendment Number Two to the Credit Agreement (the "Second Amendment") with Wells Fargo, as administrative agent, and the lenders that were parties thereto (as amended, the "Credit Agreement"). Under the terms of the Second Amendment, the lenders issued the Term Loan to us and increased the amount available under the Revolving Facility to $50.0 million. The maturity date of the Term Loan and Revolving Facility was December 24, 2023. In addition, pursuant to the Second Amendment, we were permitted to make certain restricted junior payments, including, without limitation, repurchases of our common stock, and to enter into acquisitions with no value limitation, so long as we maintained specified liquidity requirements and leverage ratios. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Second Amendment also modified certain financial covenants by, among other things, requiring us to maintain (i) an EBITDA to interest expense ratio of not less than 3.0 to 1.0, and (ii) a funded indebtedness to EBITDA ratio of not more than 3.5:1.0 (the "Required Leverage Ratio") (decreasing by 0.25 per year until the Required Leverage Ratio is 2.5 to 1.0); provided, however, that we were not required to maintain the foregoing ratios if our liquidity (defined as the sum of the remaining borrowing capacity under the Credit Agreement and available cash) had equaled or exceeded the greater of $20.0 million and 20% of the sum of the outstanding principal amount of the Term Loan and commitments under the Revolving Facility. If we entered into an acquisition with a purchase price greater than or equal to $20.0 million, then the Required Leverage Ratio would be increased by 0.5 for the 12-month period immediately following the consummation of such acquisition.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Credit Agreement contained customary affirmative, negative and financial covenants. The affirmative covenants required us to, among other things, disclose financial and other information to the lenders, maintain our business and properties, and maintain adequate insurance. The negative covenants restricted us from, among other things, incurring additional indebtedness, prepaying certain types of indebtedness, encumbering or disposing of our assets, making fundamental changes to our corporate structure, and making certain dividends and distributions.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Under the terms of the Second Amendment, borrowings under the Credit Agreement would bear interest at a fluctuating rate per annum equal to, at our option, (i) LIBOR or (ii) an alternate base rate, in each case plus the applicable interest rate margin. Borrowings would fluctuate between LIBOR plus 1.5% per annum and adjusted LIBOR plus 2.0% per annum (or between the alternate base rate plus 0.5% per annum and the alternate base rate plus 1.0% per annum), based upon our Required Leverage Ratio. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Fees payable on the unused portion of the Revolving Facility were 0.25% per annum, unless the average usage of the Revolving Facility was equal to or less than $30.0&#160;million for the applicable period, in which case the fees on the unused portion of the Revolving Facility would have been 0.375% per annum.&#160;&#160;&#160;&#160;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;In connection with the MyCase Transaction, and as required by the terms of the Credit Agreement, the Credit Agreement was terminated and all obligations outstanding under the Term Loan and Revolving Facility thereunder, including all guarantees and security interests granted with respect to such obligations, were satisfied in full with proceeds from the MyCase Transaction and extinguished. Immediately prior to the repayment of amounts owed under, and termination of, the Credit Agreement, there were approximately $48.1&#160;million in term loans outstanding and $49.1&#160;million in revolving borrowings outstanding. Refer to Note 1, &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:115%"&gt;Nature of Business&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;, and Note 3, &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:115%"&gt;Divestitures and Business Combinations&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;, of our Consolidated Financial Statements for more information about the MyCase Transaction.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Debt Financing Costs&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As a result of the Second Amendment, we incurred $0.4&#160;million in financing fees that were capitalized and amortized over the remaining life of the related debt, $0.2&#160;million of which was related to the Term Loan and $0.2&#160;million of which was related to the Revolving Facility. Pursuant to GAAP, the Second Amendment is accounted for as a debt modification. As a result, the unamortized deferred debt financing costs related to the Revolving Facility prior to the Second Amendment were added to the $0.2&#160;million of deferred debt financing costs related to the Second Amendment and amortized over the remaining life of the Revolving Facility.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Debt financing costs were deferred and amortized, using the straight-line method, which approximated the effective interest method, for costs related to the Term Loan and the straight-line method for costs related to the Revolving Facility over the term of the arrangement; such amortization is included in &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;Interest expense, net&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; in the Consolidated Statements of Operations. Amortization of deferred debt financing costs was not material for the years ended December&#160;31, 2020, 2019 and 2018. At December&#160;31, 2019, the remaining unamortized deferred debt financing costs were $0.4 million, of which $0.2 million was offset against debt. As of December&#160;31, 2019, $0.3 million of the remaining unamortized deferred debt financing costs were recorded in &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;Prepaid expenses and other current assets &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&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; Other long-term assets&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; on our Condensed Consolidated Balance Sheets, as they pertained to the Revolving Facility. &lt;/span&gt;&lt;span style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&#160;&#160;&#160;&#160;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&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 our long-term debt as of December&#160;31, 2020 and December&#160;31, 2019 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:10pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:69.617%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.809%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.810%"/&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;December 31,&lt;br/&gt;2020&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;December 31,&lt;br/&gt;2019&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Principal amounts due under Term Loan&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:10pt;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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;48,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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Unamortized debt financing costs&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(167)&lt;/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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Long-term debt, net of unamortized debt financing costs&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 #000;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:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#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="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;48,583&#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;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:LongTermDebtTextBlock>
    <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity
      contextRef="i5d2bb43fa25f4ede855814fbc5ea560f_I20181224"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzYyMA_de701369-01ba-4448-a854-9eba086fb769"
      unitRef="usd">50000000.0</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
    <appf:LongtermDebtCovenantRestrictionsEBITDAToInterestExpenseRatio
      contextRef="ief4ca0d6062342e09748b18158236fe3_D20181224-20181224"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzEyMDE_f2f2860b-4439-4f52-a4e0-0e92d35f29d9"
      unitRef="number">3.0</appf:LongtermDebtCovenantRestrictionsEBITDAToInterestExpenseRatio>
    <appf:LongtermDebtCovenantRestrictionsFundedIndebtednessToEBITDARatio
      contextRef="ief4ca0d6062342e09748b18158236fe3_D20181224-20181224"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzEyNzY_8ebccaa9-6d7c-4fc5-9055-a5a383ac5f05"
      unitRef="number">3.5</appf:LongtermDebtCovenantRestrictionsFundedIndebtednessToEBITDARatio>
    <appf:LongtermDebtCovenantRestrictionsAnnualDecreaseInRequiredLeverageRatio
      contextRef="ief4ca0d6062342e09748b18158236fe3_D20181224-20181224"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzEzMzA_01e114b5-9f5e-46ee-964b-3c8cd9d0a963"
      unitRef="number">0.25</appf:LongtermDebtCovenantRestrictionsAnnualDecreaseInRequiredLeverageRatio>
    <appf:LongtermDebtCovenantRestrictionsRequiredLeverageRatio
      contextRef="ief4ca0d6062342e09748b18158236fe3_D20181224-20181224"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzEzNzk_ab619275-f9e4-4fc8-b8a5-90ed82c99b88"
      unitRef="number">2.5</appf:LongtermDebtCovenantRestrictionsRequiredLeverageRatio>
    <appf:LongtermDebtCovenantRestrictionsFloorPlus20PercentOfTheSumOftheCombinedOutstandingPrincipalAmounts
      contextRef="i00aaad95dd5e4b6c9f541e75f8af9bfa_I20181224"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzE1ODE_856bd8ad-b28c-412e-8189-078d99a1be7c"
      unitRef="usd">20000000.0</appf:LongtermDebtCovenantRestrictionsFloorPlus20PercentOfTheSumOftheCombinedOutstandingPrincipalAmounts>
    <appf:LongtermDebtCovenantRestrictionsAcquisitionPurchasePriceFloorFor0.5IncreaseInRequiredLeverageRatioFor12MonthPeriodFollowingTheCloseDate
      contextRef="i00aaad95dd5e4b6c9f541e75f8af9bfa_I20181224"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzE3ODE_a61a7f96-4e1e-411e-acbb-e400462b28da"
      unitRef="usd">20000000.0</appf:LongtermDebtCovenantRestrictionsAcquisitionPurchasePriceFloorFor0.5IncreaseInRequiredLeverageRatioFor12MonthPeriodFollowingTheCloseDate>
    <us-gaap:DebtInstrumentBasisSpreadOnVariableRate1
      contextRef="i97955c9d90b447298886c0809dad35fe_D20181224-20181224"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzI5MjI_f99c6aad-9328-4193-9e69-c4145fce884f"
      unitRef="number">0.015</us-gaap:DebtInstrumentBasisSpreadOnVariableRate1>
    <us-gaap:DebtInstrumentBasisSpreadOnVariableRate1
      contextRef="i3d2a314ee2504faf9675a444488e13dc_D20181224-20181224"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzI5NTk_e48ed0ec-b522-4ca3-a134-61538a8bf45d"
      unitRef="number">0.020</us-gaap:DebtInstrumentBasisSpreadOnVariableRate1>
    <us-gaap:DebtInstrumentBasisSpreadOnVariableRate1
      contextRef="if25f5735de8b496f8a8d99c6e8d45323_D20181224-20181224"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzMwMTM_ba4df014-abfb-4b13-ab74-cbb0d8ecbaf0"
      unitRef="number">0.005</us-gaap:DebtInstrumentBasisSpreadOnVariableRate1>
    <us-gaap:DebtInstrumentBasisSpreadOnVariableRate1
      contextRef="i826b214e658d46a79510bbd20e137e62_D20181224-20181224"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzMwNTk_b466c417-b8a0-4ff0-9fe6-606147e28f7f"
      unitRef="number">0.010</us-gaap:DebtInstrumentBasisSpreadOnVariableRate1>
    <us-gaap:LineOfCreditFacilityCommitmentFeePercentage
      contextRef="i1e858f386e8440168941459a4818d4b1_D20181224-20181224"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzQ5NDc4MDIzMzUwMjA_a3d9e492-a286-4600-bb6b-9647e234432a"
      unitRef="number">0.0025</us-gaap:LineOfCreditFacilityCommitmentFeePercentage>
    <appf:LongtermDebtCommitmentFeeUsageThresholdFor37.5BasisPointsCommitmentFeePercentage
      contextRef="i5d2bb43fa25f4ede855814fbc5ea560f_I20181224"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzQ5NDc4MDIzMzUwNDE_52297a72-ae18-4cd1-96f3-ce00c26efbfb"
      unitRef="usd">30000000.0</appf:LongtermDebtCommitmentFeeUsageThresholdFor37.5BasisPointsCommitmentFeePercentage>
    <us-gaap:LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage
      contextRef="i1e858f386e8440168941459a4818d4b1_D20181224-20181224"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzQ5NDc4MDIzMzUwNjM_ae3b26a8-63f2-4b80-b415-9db117d1c3b1"
      unitRef="number">0.00375</us-gaap:LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage>
    <us-gaap:DebtInstrumentCarryingAmount
      contextRef="ia5623b515ce04b94a632d2c12bfbd351_I20200929"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzQ5NDc4MDIzMzU5NDI_96a85cea-a9db-442b-8a4b-a05232b4c796"
      unitRef="usd">48100000</us-gaap:DebtInstrumentCarryingAmount>
    <us-gaap:DebtInstrumentCarryingAmount
      contextRef="i1f47cdaf3a8945fe95c94b53adcfd508_I20200929"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzQ5NDc4MDIzMzU5NzE_311698e8-e20d-4d96-bf9d-c02f1dd62c1f"
      unitRef="usd">49100000</us-gaap:DebtInstrumentCarryingAmount>
    <us-gaap:DebtInstrumentUnamortizedDiscountPremiumAndDebtIssuanceCostsNet
      contextRef="i2713f3c7fb3a48aa9a42d605d7028a69_I20181224"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzQ5NDc4MDIzMzcyMjY_efb793b3-68c4-4d72-90fc-fd86915b3429"
      unitRef="usd">400000</us-gaap:DebtInstrumentUnamortizedDiscountPremiumAndDebtIssuanceCostsNet>
    <us-gaap:DebtInstrumentUnamortizedDiscountPremiumAndDebtIssuanceCostsNet
      contextRef="ia63bf3ccdce24413b417a81518b6bd6a_I20181224"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzQ5NDc4MDIzMzcyNTM_b3130991-3918-44fa-a63b-4090583da04a"
      unitRef="usd">200000</us-gaap:DebtInstrumentUnamortizedDiscountPremiumAndDebtIssuanceCostsNet>
    <us-gaap:DebtInstrumentUnamortizedDiscountPremiumAndDebtIssuanceCostsNet
      contextRef="i5d2bb43fa25f4ede855814fbc5ea560f_I20181224"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzQ5NDc4MDIzMzcyODA_43200052-c78e-4003-8524-d14adae57c47"
      unitRef="usd">200000</us-gaap:DebtInstrumentUnamortizedDiscountPremiumAndDebtIssuanceCostsNet>
    <us-gaap:DebtInstrumentUnamortizedDiscountPremiumAndDebtIssuanceCostsNet
      contextRef="i5d2bb43fa25f4ede855814fbc5ea560f_I20181224"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzQ5NDc4MDIzMzczMDc_1bb3a05f-d720-4508-8813-27975c59533e"
      unitRef="usd">200000</us-gaap:DebtInstrumentUnamortizedDiscountPremiumAndDebtIssuanceCostsNet>
    <us-gaap:DebtInstrumentUnamortizedDiscountPremiumAndDebtIssuanceCostsNet
      contextRef="ifa0ef33b66ab45b2be95c13e1a816073_I20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzQ3MjI_40605019-e4fe-4749-a0d7-0aa86413a242"
      unitRef="usd">400000</us-gaap:DebtInstrumentUnamortizedDiscountPremiumAndDebtIssuanceCostsNet>
    <us-gaap:DebtInstrumentUnamortizedDiscountPremiumAndDebtIssuanceCostsNet
      contextRef="i7bdd49104c9a4939829127a288b50cd3_I20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzQ5NDc4MDIzMzAwMjE_4908fc73-eeed-4910-affa-f17bb4fc1300"
      unitRef="usd">200000</us-gaap:DebtInstrumentUnamortizedDiscountPremiumAndDebtIssuanceCostsNet>
    <us-gaap:DebtInstrumentUnamortizedDiscountPremiumAndDebtIssuanceCostsNet
      contextRef="i829c8c644d9041498e5e6b8e3b91f03a_I20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzQ5NDc4MDIzMzAwMzQ_21b8765a-a2a0-4e6a-bc8f-dce3790c9a7a"
      unitRef="usd">300000</us-gaap:DebtInstrumentUnamortizedDiscountPremiumAndDebtIssuanceCostsNet>
    <us-gaap:ScheduleOfDebtInstrumentsTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90ZXh0cmVnaW9uOmM1MjUwOGFmNjg1MjQyNTA4ZWE0YTQ1NjY5MzllYjNlXzY1OTcwNjk3ODAwNjI_c1f02488-fb72-4f6a-92dc-856168285767">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&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 our long-term debt as of December&#160;31, 2020 and December&#160;31, 2019 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:10pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:69.617%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.809%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.810%"/&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;December 31,&lt;br/&gt;2020&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;December 31,&lt;br/&gt;2019&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Principal amounts due under Term Loan&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:10pt;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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;48,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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Unamortized debt financing costs&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(167)&lt;/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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Long-term debt, net of unamortized debt financing costs&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 #000;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:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#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="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;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:10pt;font-weight:400;line-height:100%"&gt;48,583&#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;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfDebtInstrumentsTextBlock>
    <us-gaap:DebtInstrumentCarryingAmount
      contextRef="i3bedcfe0e1984287a7cb21d97bbb1fff_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90YWJsZTowMjE5YzlkZjVkMDc0MjUwODIxMDdhNGZjZTgyNzlmZC90YWJsZXJhbmdlOjAyMTljOWRmNWQwNzQyNTA4MjEwN2E0ZmNlODI3OWZkXzEtMi0xLTEtNjY5MA_f2edb7f5-886e-4210-a895-ab0cca770a9f"
      unitRef="usd">0</us-gaap:DebtInstrumentCarryingAmount>
    <us-gaap:DebtInstrumentCarryingAmount
      contextRef="i7bdd49104c9a4939829127a288b50cd3_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90YWJsZTowMjE5YzlkZjVkMDc0MjUwODIxMDdhNGZjZTgyNzlmZC90YWJsZXJhbmdlOjAyMTljOWRmNWQwNzQyNTA4MjEwN2E0ZmNlODI3OWZkXzEtNC0xLTEtNjY5Mg_8c313d78-a64e-47f9-9d5f-e49abd577ff5"
      unitRef="usd">48750000</us-gaap:DebtInstrumentCarryingAmount>
    <us-gaap:DeferredFinanceCostsNet
      contextRef="i3bedcfe0e1984287a7cb21d97bbb1fff_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90YWJsZTowMjE5YzlkZjVkMDc0MjUwODIxMDdhNGZjZTgyNzlmZC90YWJsZXJhbmdlOjAyMTljOWRmNWQwNzQyNTA4MjEwN2E0ZmNlODI3OWZkXzItMi0xLTEtNjY5MA_c772e65c-6d5d-4501-a0ad-3b3323ecf310"
      unitRef="usd">0</us-gaap:DeferredFinanceCostsNet>
    <us-gaap:DeferredFinanceCostsNet
      contextRef="i7bdd49104c9a4939829127a288b50cd3_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90YWJsZTowMjE5YzlkZjVkMDc0MjUwODIxMDdhNGZjZTgyNzlmZC90YWJsZXJhbmdlOjAyMTljOWRmNWQwNzQyNTA4MjEwN2E0ZmNlODI3OWZkXzItNC0xLTEtNjY5Mg_6c3f67be-a2a7-41f2-a16f-4c8664e016c7"
      unitRef="usd">167000</us-gaap:DeferredFinanceCostsNet>
    <us-gaap:LongTermDebt
      contextRef="i3bedcfe0e1984287a7cb21d97bbb1fff_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90YWJsZTowMjE5YzlkZjVkMDc0MjUwODIxMDdhNGZjZTgyNzlmZC90YWJsZXJhbmdlOjAyMTljOWRmNWQwNzQyNTA4MjEwN2E0ZmNlODI3OWZkXzMtMi0xLTEtNjY5MA_c5c2d6ed-751e-421a-94b1-7118aa0d2131"
      unitRef="usd">0</us-gaap:LongTermDebt>
    <us-gaap:LongTermDebt
      contextRef="i7bdd49104c9a4939829127a288b50cd3_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMjcvZnJhZzpjNTI1MDhhZjY4NTI0MjUwOGVhNGE0NTY2OTM5ZWIzZS90YWJsZTowMjE5YzlkZjVkMDc0MjUwODIxMDdhNGZjZTgyNzlmZC90YWJsZXJhbmdlOjAyMTljOWRmNWQwNzQyNTA4MjEwN2E0ZmNlODI3OWZkXzMtNC0xLTEtNjY5Mg_bd65d884-0786-424f-a1e1-3dce4fc5c765"
      unitRef="usd">48583000</us-gaap:LongTermDebt>
    <us-gaap:CommitmentsAndContingenciesDisclosureTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzMvZnJhZzplMWE3N2IwZTdhOWQ0YmVlYmFhY2Y0ZTdjYTBhY2FhYS90ZXh0cmVnaW9uOmUxYTc3YjBlN2E5ZDRiZWViYWFjZjRlN2NhMGFjYWFhXzQxNDk_4ca33e7a-60ce-488b-af98-efa4195718cf">Commitments and Contingencies&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&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;Legal Liability to Landlord Insurance&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We have a wholly owned subsidiary, Terra Mar Insurance Company, Inc., which was established to provide our customers with the option to purchase legal liability to landlord insurance. If our customers choose to use our insurance services, they are issued an insurance policy underwritten by our third-party service provider. The policy has a limit of $100,000 per incident for each insured residence. We have entered into a reinsurance agreement with our third-party service provider and, as a result, we assume a 100% quota share of the legal liability to landlord insurance provided to our customers through our third-party service provider. Included in cost of revenue we accrue for reported claims, and an estimate of losses incurred but not reported by our property management customers, as we bear the risk related to claims. Our liability for reported claims and incurred but not reported claims at December&#160;31, 2020 and 2019 was $1.5 million and $1.8 million, respectively, and is included in &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;other current liabilities&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; on our Consolidated Balance Sheets.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Included in prepaid expenses and other current assets as of December&#160;31, 2020 and 2019 are $2.7 million and $1.3 million, respectively, of deposits held with a third party related to requirements to maintain collateral for our insurance services.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&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;Legal Proceedings&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 2019, we received a Request for Information from the Civil Rights Division (Housing and Civil Enforcement Section) of the U.S. Department of Justice ("DOJ") requesting certain information relating to our compliance with the Servicemembers Civil Relief Act in connection with our tenant screening Value+ service. On November 6, 2020, the DOJ issued a no action letter, declining to take any action against us and closing its investigation. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In December 2018, we received a Civil Investigative Demand from the Federal Trade Commission ("FTC") requesting certain information relating to our compliance with the Fair Credit Reporting Act in connection with our tenant screening Value+ service (the "FTC Investigation"). On April 30, 2020, the FTC staff informed us of its belief that there is a reasonable basis for asserting claims against us for our alleged failure to comply with certain sections of the FCRA that could result in monetary penalty and/or injunctive relief. We disagree with the stated belief of the FTC and vigorously defended our position.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Notwithstanding our disagreement with the FTC's position, and primarily in an effort to avoid protracted litigation and potential distraction to our business, we entered into settlement negotiations with the FTC in an effort to resolve all claims and allegations arising out of or relating to the FTC Investigation. Those settlement negotiations resulted in a final agreement between the parties that is memorialized in a Stipulated Order for Permanent Injunction and Civil Penalty Judgment filed in the United States District Court for the District of Columbia on January 12, 2021. We admitted no wrongdoing in connection with the settlement.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 second quarter of 2020, we determined that a loss stemming from the FTC Investigation was probable and that a reasonable estimate of the loss was approximately $4.3&#160;million. Accordingly, an accrual of $4.3&#160;million is included within &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;accrued expenses&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; on our Consolidated Balance Sheet as of December&#160;31, 2020. The ultimate settlement amount of $4.3&#160;million was paid in January 2021. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 to the foregoing, from time to time, we are involved in various other investigatory inquiries or legal proceedings arising from or related to matters incident to the ordinary course of our business activities, including actions with respect to intellectual property, employment, regulatory and contractual issues. Although the results of such investigatory inquiries and legal proceedings cannot be predicted with certainty, we believe that we are not currently a party to any investigatory inquiries or legal proceeding(s) which, if determined adversely to us, would, individually or taken together, have a material adverse effect on our business, operating results, financial condition or cash flows.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Indemnification&lt;/span&gt;&lt;/div&gt;In the ordinary course of business, we may provide indemnification of varying scope and terms to customers, investors, directors and officers with respect to certain matters, including, but not limited to, losses arising out of our breach of any applicable agreements, services to be provided by us, or intellectual property infringement claims made by third parties. These indemnification provisions may survive termination of the underlying agreement and the maximum potential amount of future payments we could be required to make under these indemnification provisions may not be subject to maximum loss clauses and is indeterminable. We have never paid a material claim, nor have any legal claims been brought against us, in connection with these indemnification arrangements. At&#160;December&#160;31, 2020&#160;and&#160;2019, we have not accrued a liability for these indemnification arrangements because we determined that the likelihood of incurring a payment obligation, if any, in connection with these indemnification arrangements is not probable or reasonably possible and the amount or range of amounts of any such liability is not reasonably estimable.</us-gaap:CommitmentsAndContingenciesDisclosureTextBlock>
    <appf:PropertyLiabilityAndCasualtyInsurancePerIncidentAndPerResidenceCoverageLimit
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzMvZnJhZzplMWE3N2IwZTdhOWQ0YmVlYmFhY2Y0ZTdjYTBhY2FhYS90ZXh0cmVnaW9uOmUxYTc3YjBlN2E5ZDRiZWViYWFjZjRlN2NhMGFjYWFhXzQzMA_97a44794-a8c0-483f-9a1f-c51ac39dafc1"
      unitRef="usd">100000</appf:PropertyLiabilityAndCasualtyInsurancePerIncidentAndPerResidenceCoverageLimit>
    <us-gaap:ReinsuranceRetentionPolicyReinsuredRiskPercentage
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzMvZnJhZzplMWE3N2IwZTdhOWQ0YmVlYmFhY2Y0ZTdjYTBhY2FhYS90ZXh0cmVnaW9uOmUxYTc3YjBlN2E5ZDRiZWViYWFjZjRlN2NhMGFjYWFhXzU4Nw_27484a5a-d7b6-4695-866d-a4e3e4b5dd48"
      unitRef="number">1</us-gaap:ReinsuranceRetentionPolicyReinsuredRiskPercentage>
    <us-gaap:LiabilityForClaimsAndClaimsAdjustmentExpensePropertyCasualtyLiability
      contextRef="i46fb2a43bf58405182bde6aa9232f5fa_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzMvZnJhZzplMWE3N2IwZTdhOWQ0YmVlYmFhY2Y0ZTdjYTBhY2FhYS90ZXh0cmVnaW9uOmUxYTc3YjBlN2E5ZDRiZWViYWFjZjRlN2NhMGFjYWFhXzk5MQ_e1b3fcc7-ea10-4f83-8086-623e9c10d042"
      unitRef="usd">1500000</us-gaap:LiabilityForClaimsAndClaimsAdjustmentExpensePropertyCasualtyLiability>
    <us-gaap:LiabilityForClaimsAndClaimsAdjustmentExpensePropertyCasualtyLiability
      contextRef="i617566f47284443e9deae70759318fe3_I20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzMvZnJhZzplMWE3N2IwZTdhOWQ0YmVlYmFhY2Y0ZTdjYTBhY2FhYS90ZXh0cmVnaW9uOmUxYTc3YjBlN2E5ZDRiZWViYWFjZjRlN2NhMGFjYWFhXzk5OA_36787cf2-e997-4cca-a580-659f1e2c9a7d"
      unitRef="usd">1800000</us-gaap:LiabilityForClaimsAndClaimsAdjustmentExpensePropertyCasualtyLiability>
    <appf:PropertyLiabilityAndCasualtyInsuranceDepositsHeldWithThirdPartyAsCollateralForServices
      contextRef="i757d8937ab924ece9470646b55114888_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzMvZnJhZzplMWE3N2IwZTdhOWQ0YmVlYmFhY2Y0ZTdjYTBhY2FhYS90ZXh0cmVnaW9uOmUxYTc3YjBlN2E5ZDRiZWViYWFjZjRlN2NhMGFjYWFhXzExNzI_714db72d-b45f-4e54-ad0a-b6899773c503"
      unitRef="usd">2700000</appf:PropertyLiabilityAndCasualtyInsuranceDepositsHeldWithThirdPartyAsCollateralForServices>
    <appf:PropertyLiabilityAndCasualtyInsuranceDepositsHeldWithThirdPartyAsCollateralForServices
      contextRef="ida24abba03d94978821a3af5af849f29_I20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzMvZnJhZzplMWE3N2IwZTdhOWQ0YmVlYmFhY2Y0ZTdjYTBhY2FhYS90ZXh0cmVnaW9uOmUxYTc3YjBlN2E5ZDRiZWViYWFjZjRlN2NhMGFjYWFhXzExNzk_71f53ec6-8eb3-4944-bc49-f5646b7becf3"
      unitRef="usd">1300000</appf:PropertyLiabilityAndCasualtyInsuranceDepositsHeldWithThirdPartyAsCollateralForServices>
    <us-gaap:LossContingencyEstimateOfPossibleLoss
      contextRef="i45088498d4d54152a858c260f003d2c1_I20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzMvZnJhZzplMWE3N2IwZTdhOWQ0YmVlYmFhY2Y0ZTdjYTBhY2FhYS90ZXh0cmVnaW9uOmUxYTc3YjBlN2E5ZDRiZWViYWFjZjRlN2NhMGFjYWFhXzY1OTcwNjk3NzUyNjI_96112f5d-d21b-435e-9094-c338bf221511"
      unitRef="usd">4300000</us-gaap:LossContingencyEstimateOfPossibleLoss>
    <us-gaap:LossContingencyAccrualAtCarryingValue
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzMvZnJhZzplMWE3N2IwZTdhOWQ0YmVlYmFhY2Y0ZTdjYTBhY2FhYS90ZXh0cmVnaW9uOmUxYTc3YjBlN2E5ZDRiZWViYWFjZjRlN2NhMGFjYWFhXzY1OTcwNjk3NzUyNzY_297acf68-318b-4280-a877-51cb6147ab71"
      unitRef="usd">4300000</us-gaap:LossContingencyAccrualAtCarryingValue>
    <us-gaap:PaymentsForLegalSettlements
      contextRef="i6bcd27dfaced473d9f8ce876ed96f27c_D20210101-20210131"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzMvZnJhZzplMWE3N2IwZTdhOWQ0YmVlYmFhY2Y0ZTdjYTBhY2FhYS90ZXh0cmVnaW9uOmUxYTc3YjBlN2E5ZDRiZWViYWFjZjRlN2NhMGFjYWFhXzY1OTcwNjk3NzUyOTA_1f2ece8c-d099-424d-9b95-477132582ca9"
      unitRef="usd">4300000</us-gaap:PaymentsForLegalSettlements>
    <us-gaap:StockholdersEquityNoteDisclosureTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzkvZnJhZzowMGRhYTQyY2Q0YzY0ODFkOGNkMzBmOTI0NDZjZjhkZS90ZXh0cmVnaW9uOjAwZGFhNDJjZDRjNjQ4MWQ4Y2QzMGY5MjQ0NmNmOGRlXzYzOTI_d3142f8d-4cef-4e7e-a88b-e31054018129">Stockholders&#x2019; Equity &lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&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;Amended and Restated Certificate of Incorporation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Upon the effectiveness of our Amended and Restated Certificate of Incorporation on June 25, 2015, the number of shares of capital stock that is authorized to be issued was increased to 325,000,000 shares, of which 250,000,000 shares are Class A common stock, 50,000,000 shares are Class B common stock and 25,000,000 are undesignated preferred stock. The Class A common stock, Class B common stock and preferred stock have a par value of $0.0001 per share. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Class A Common Stock and Class B Common Stock &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Except for voting rights, or as otherwise required by applicable law, the shares of our Class&#160;A common stock and Class B common stock have the same powers, preferences and rights and rank equally, share ratably and are identical in all respects as to all matters. The rights and preferences are as follows:&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;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Dividend Rights&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;. Subject to preferences that may apply to any shares of preferred stock outstanding at the time, the holders of outstanding shares of our Class A common stock and Class B common stock are entitled to receive dividends out of funds legally available at the times and in the amounts that our Board of Directors may determine. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Voting Rights&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;. The holders of our Class&#160;A common stock are entitled to one vote per share, and holders of our Class B common stock are entitled to 10 votes per share. The holders of our Class&#160;A common stock and Class B common stock will vote together as a single class on all matters submitted to a vote of our stockholders, unless otherwise required by Delaware law or our amended and restated certificate of incorporation. Delaware law could require either holders of our Class&#160;A common stock or holders of our Class B common stock to vote separately. In addition, our amended and restated certificate of incorporation requires the approval of the holders of at least a majority of the outstanding shares of our Class B common stock, voting as a separate class to approve a change-in-control transaction. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Conversion&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;. Upon the closing of our initial public offering ("IPO"), all shares of our convertible preferred stock and common stock held prior to the offering were converted into shares of Class B common stock. Currently, each share of our Class B common stock is convertible at any time at the option of the holder into one share of our Class&#160;A common stock. In addition, each share of our Class B common stock will convert into one share of our Class&#160;A common stock upon any transfer, whether or not for value, except for certain transfers described in our amended and restated certificate of incorporation, including, without limitation, (i)&#160;a transfer by a partnership or limited liability company that was a registered holder of our Class B common stock at the &#x201c;effective time,&#x201d; as defined in our amended and restated certificate of incorporation, to a partner or member thereof at the effective time or (ii)&#160;a transfer to a &#x201c;qualified recipient,&#x201d; as defined in our amended and restated certificate of incorporation. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;All the outstanding shares of our Class B common stock will convert automatically into shares of our Class&#160;A common stock upon the date when the number of outstanding shares of our Class B common stock represents less than 10% of all outstanding shares of our Class&#160;A common stock and Class B common stock. Once converted into our Class A common stock, our Class B common stock may not be reissued. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Right to Receive Liquidation Distributions&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;. Upon our dissolution, liquidation or winding-up, the assets legally available for distribution to our stockholders are distributable ratably among the holders of our Class&#160;A common stock and Class B common stock, subject to prior satisfaction of all outstanding debt and liabilities and the preferential rights and payment of liquidation preferences, if any, on any outstanding shares of preferred stock. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Effective upon the filing of our amended and restated certificate of incorporation in June 2015, no shares of preferred stock were outstanding because all outstanding shares of our convertible preferred stock converted into our Class B common stock. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Pursuant to the terms of our amended and restated certificate of incorporation, our Board of Directors will be authorized, subject to limitations prescribed by Delaware law, to issue up to 25,000,000 shares of our preferred stock in one or more series, to establish from time to time the number of shares to be included in each series, and to fix the designation, powers, preferences and rights of the shares of each series and any of its qualifications, limitations or restrictions, in each case without further action by our stockholders. The number of authorized shares of any series of preferred stock may be increased or decreased, but not below the number of shares of that series then outstanding, by the affirmative vote of the holders of a majority of the voting power of our outstanding capital stock entitled to vote thereon, or such other vote as may be required by the certificate of designation establishing the series. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;Share Repurchase Program&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:6pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;On February 20, 2019, our Board of Directors authorized a $100.0&#160;million share repurchase program (the "Share Repurchase Program") relating to our outstanding shares of Class A common stock. Under the Share Repurchase Program, share repurchases may be made from time to time, as directed by a committee consisting of three directors, in open market purchases or in privately negotiated transactions at a repurchase price that the members of the committee unanimously believe is below intrinsic value conservatively determined. The Share Repurchase Program does not obligate us to repurchase any specific dollar amount or number of shares, there is no expiration date for the Share Repurchase Program, &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 it may be modified, suspended or terminated at any time and for any reason. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 three months ended March 31, 2020, we repurchased a total of 48,002 shares of our Class A common stock through open market repurchases, and recorded a $4.2&#160;million reduction to stockholders' equity, which includes broker commissions. We have not made any repurchases under the &lt;/span&gt;&lt;span style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Share Repurchase &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;Program subsequent to the three months ended March 31, 2020.&lt;/span&gt;&lt;/div&gt;</us-gaap:StockholdersEquityNoteDisclosureTextBlock>
    <us-gaap:CapitalUnitsAuthorized
      contextRef="ic77deb8838064aa4b4d2582a554d5094_I20150625"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzkvZnJhZzowMGRhYTQyY2Q0YzY0ODFkOGNkMzBmOTI0NDZjZjhkZS90ZXh0cmVnaW9uOjAwZGFhNDJjZDRjNjQ4MWQ4Y2QzMGY5MjQ0NmNmOGRlXzI2OQ_e8a80917-3238-4f38-b58e-57b67379314e"
      unitRef="shares">325000000</us-gaap:CapitalUnitsAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i486b50d6796e458787aeee05fb98d767_I20150625"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzkvZnJhZzowMGRhYTQyY2Q0YzY0ODFkOGNkMzBmOTI0NDZjZjhkZS90ZXh0cmVnaW9uOjAwZGFhNDJjZDRjNjQ4MWQ4Y2QzMGY5MjQ0NmNmOGRlXzI4OQ_b716adab-8e35-430f-9fb9-4dc5cf6c974d"
      unitRef="shares">250000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i06d1dcad0b414943bd97379ecab92675_I20150625"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzkvZnJhZzowMGRhYTQyY2Q0YzY0ODFkOGNkMzBmOTI0NDZjZjhkZS90ZXh0cmVnaW9uOjAwZGFhNDJjZDRjNjQ4MWQ4Y2QzMGY5MjQ0NmNmOGRlXzMyNQ_e4588c9c-530f-4f64-8ecf-03b9f550912e"
      unitRef="shares">50000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="ie9581f6f547543d2a095259cacc478e1_I20150625"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzkvZnJhZzowMGRhYTQyY2Q0YzY0ODFkOGNkMzBmOTI0NDZjZjhkZS90ZXh0cmVnaW9uOjAwZGFhNDJjZDRjNjQ4MWQ4Y2QzMGY5MjQ0NmNmOGRlXzM2NA_b6b3652c-05cf-470e-8e21-105975c364a4"
      unitRef="shares">25000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i486b50d6796e458787aeee05fb98d767_I20150625"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzkvZnJhZzowMGRhYTQyY2Q0YzY0ODFkOGNkMzBmOTI0NDZjZjhkZS90ZXh0cmVnaW9uOjAwZGFhNDJjZDRjNjQ4MWQ4Y2QzMGY5MjQ0NmNmOGRlXzQ4OA_5cac2678-fc0e-499c-b692-3e23ab77d7c5"
      unitRef="usdPerShare">0.0001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i06d1dcad0b414943bd97379ecab92675_I20150625"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzkvZnJhZzowMGRhYTQyY2Q0YzY0ODFkOGNkMzBmOTI0NDZjZjhkZS90ZXh0cmVnaW9uOjAwZGFhNDJjZDRjNjQ4MWQ4Y2QzMGY5MjQ0NmNmOGRlXzQ4OA_6c8ba824-bb07-42e2-8f48-f737eef9ebe8"
      unitRef="usdPerShare">0.0001</us-gaap:CommonStockParOrStatedValuePerShare>
    <appf:CommonStockNumberOfVotesPerShare
      contextRef="iccdd68156c904b7b8b969730c9de8556_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzkvZnJhZzowMGRhYTQyY2Q0YzY0ODFkOGNkMzBmOTI0NDZjZjhkZS90ZXh0cmVnaW9uOjAwZGFhNDJjZDRjNjQ4MWQ4Y2QzMGY5MjQ0NmNmOGRlXzE0MjY_118b06d4-9476-4f3b-a533-804b95defb08"
      unitRef="vote">1</appf:CommonStockNumberOfVotesPerShare>
    <appf:CommonStockNumberOfVotesPerShare
      contextRef="i3505cdf241aa4a2c8081f6d9f7a4c764_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzkvZnJhZzowMGRhYTQyY2Q0YzY0ODFkOGNkMzBmOTI0NDZjZjhkZS90ZXh0cmVnaW9uOjAwZGFhNDJjZDRjNjQ4MWQ4Y2QzMGY5MjQ0NmNmOGRlXzE1MDE_cf54f973-6bae-40dd-a46b-36f653fb3708"
      unitRef="vote">10</appf:CommonStockNumberOfVotesPerShare>
    <appf:ConversionOfStockNumberOfSharesIssuableUponConversion
      contextRef="i20737f1adc9f4c41b155b4054e95aa6a_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzkvZnJhZzowMGRhYTQyY2Q0YzY0ODFkOGNkMzBmOTI0NDZjZjhkZS90ZXh0cmVnaW9uOjAwZGFhNDJjZDRjNjQ4MWQ4Y2QzMGY5MjQ0NmNmOGRlXzI0ODQ_a89b6bd6-e4fc-4c89-ace6-62d51136c3b1"
      unitRef="number">1</appf:ConversionOfStockNumberOfSharesIssuableUponConversion>
    <appf:ConversionOfStockNumberOfSharesIssuableUponConversionDueToTransfer
      contextRef="i20737f1adc9f4c41b155b4054e95aa6a_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzkvZnJhZzowMGRhYTQyY2Q0YzY0ODFkOGNkMzBmOTI0NDZjZjhkZS90ZXh0cmVnaW9uOjAwZGFhNDJjZDRjNjQ4MWQ4Y2QzMGY5MjQ0NmNmOGRlXzI1OTI_1c94eac0-b99b-4e2d-8027-0c67fc6a454f"
      unitRef="number">1</appf:ConversionOfStockNumberOfSharesIssuableUponConversionDueToTransfer>
    <appf:CommonStockAutomaticConversionThreshold
      contextRef="i20737f1adc9f4c41b155b4054e95aa6a_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzkvZnJhZzowMGRhYTQyY2Q0YzY0ODFkOGNkMzBmOTI0NDZjZjhkZS90ZXh0cmVnaW9uOjAwZGFhNDJjZDRjNjQ4MWQ4Y2QzMGY5MjQ0NmNmOGRlXzM0MDg_8d1af1bf-ed37-4594-afde-3a4a764df3eb"
      unitRef="number">0.10</appf:CommonStockAutomaticConversionThreshold>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="ic77deb8838064aa4b4d2582a554d5094_I20150625"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzkvZnJhZzowMGRhYTQyY2Q0YzY0ODFkOGNkMzBmOTI0NDZjZjhkZS90ZXh0cmVnaW9uOjAwZGFhNDJjZDRjNjQ4MWQ4Y2QzMGY5MjQ0NmNmOGRlXzQxNTE_46ab214d-ac6e-4b58-aba8-495245431d45"
      unitRef="shares">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="ic77deb8838064aa4b4d2582a554d5094_I20150625"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzkvZnJhZzowMGRhYTQyY2Q0YzY0ODFkOGNkMzBmOTI0NDZjZjhkZS90ZXh0cmVnaW9uOjAwZGFhNDJjZDRjNjQ4MWQ4Y2QzMGY5MjQ0NmNmOGRlXzQ0OTc_96afc49b-e4e1-4a22-bd3a-870c9d2974da"
      unitRef="shares">25000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:StockRepurchaseProgramAuthorizedAmount1
      contextRef="i86d127b091904d9fba57f908929b83a8_I20190220"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzkvZnJhZzowMGRhYTQyY2Q0YzY0ODFkOGNkMzBmOTI0NDZjZjhkZS90ZXh0cmVnaW9uOjAwZGFhNDJjZDRjNjQ4MWQ4Y2QzMGY5MjQ0NmNmOGRlXzY1OTcwNjk3NzU1NzU_6acbe09a-a82b-4684-8fc9-c3361e431136"
      unitRef="usd">100000000.0</us-gaap:StockRepurchaseProgramAuthorizedAmount1>
    <appf:StockRepurchaseProgramNumberOfDirectorsToAuthorizeRepurchases
      contextRef="i86d127b091904d9fba57f908929b83a8_I20190220"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzkvZnJhZzowMGRhYTQyY2Q0YzY0ODFkOGNkMzBmOTI0NDZjZjhkZS90ZXh0cmVnaW9uOjAwZGFhNDJjZDRjNjQ4MWQ4Y2QzMGY5MjQ0NmNmOGRlXzY1OTcwNjk3NzU2MTQ_5f5254ec-dd47-4010-a0fa-ece102b35686"
      unitRef="director">3</appf:StockRepurchaseProgramNumberOfDirectorsToAuthorizeRepurchases>
    <us-gaap:TreasuryStockSharesAcquired
      contextRef="icf6294c2e6ce4c0db2bbcf34f0ca913f_D20200101-20200331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzkvZnJhZzowMGRhYTQyY2Q0YzY0ODFkOGNkMzBmOTI0NDZjZjhkZS90ZXh0cmVnaW9uOjAwZGFhNDJjZDRjNjQ4MWQ4Y2QzMGY5MjQ0NmNmOGRlXzY1OTcwNjk3NzU1OTE_eb1cfc29-7647-42c0-8b9d-2dc94e418d7c"
      unitRef="shares">48002</us-gaap:TreasuryStockSharesAcquired>
    <us-gaap:TreasuryStockValueAcquiredCostMethod
      contextRef="icf6294c2e6ce4c0db2bbcf34f0ca913f_D20200101-20200331"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xMzkvZnJhZzowMGRhYTQyY2Q0YzY0ODFkOGNkMzBmOTI0NDZjZjhkZS90ZXh0cmVnaW9uOjAwZGFhNDJjZDRjNjQ4MWQ4Y2QzMGY5MjQ0NmNmOGRlXzY1OTcwNjk3NzU1OTk_f1317b3f-e423-47e0-8381-b6ef5e0ffbbe"
      unitRef="usd">4200000</us-gaap:TreasuryStockValueAcquiredCostMethod>
    <us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIwNjg_7096bbde-9c9c-4e00-8013-e281a65b261d">Stock-Based Compensation2015 Stock Incentive Plan&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In conjunction with our IPO in 2015, our Board of Directors and stockholders adopted the 2015 Stock Incentive Plan (the "2015 Plan"). Upon adoption of the 2015 Plan, 2,000,000 shares of our Class A common stock were reserved and available for grant and issuance. On January 1 of each subsequent calendar year, the number of shares available for grant and issuance under the 2015 Plan increase by the lesser of (i)&#160;the number of shares of our Class A common stock subject to awards granted under the 2015 Plan during the preceding calendar year and (ii)&#160;such lesser number of shares of our Class A common stock determined by our Board of Directors. At December&#160;31, 2020, we have reserved an aggregate of 4,026,493 shares of our Class&#160;A common stock for grant and issuance under the 2015 Plan. The number of shares of our Class A common stock is also subject to adjustment in the event of a recapitalization, stock split, reclassification, stock dividend or other change in our capitalization. The 2015 Plan authorizes the award of stock options, stock appreciation rights, RSAs, RSUs, performance awards and stock bonuses. The 2015 Plan provides for the grant of awards to our employees, directors, consultants and independent contractors, subject to certain exceptions. RSUs, PSUs, and RSAs have been issued during 2020 pursuant to the 2015 Plan.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 may vest based on the passage of time or the achievement of performance conditions at the discretion of our compensation committee.&#160;Our compensation committee may provide for stock options to be exercised only as they vest or to be immediately exercisable with any shares issued on exercise being subject to our right of repurchase that lapses as the shares vest.&#160;The maximum term of stock options granted under the 2015 Plan is 10 years.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;RSUs and PSUs represent the right on the part of the holder to receive shares of our Class&#160;A common stock at a specified date in the future or the achievement of performance conditions at the discretion of our compensation committee, subject to forfeiture of that right due to termination of employment.&#160;If an RSU or PSU has not been forfeited, then, on the specified date, we will deliver to the holder of the RSU or PSU shares of our Class&#160;A common stock. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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;2007 Stock Incentive Plan&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;On February&#160;14, 2007, our Board of Directors adopted the 2007 Stock Incentive Plan (the &#x201c;2007 Plan&#x201d;). Following our IPO, our Board of Directors determined not to make any further awards under the 2007 Plan. The 2007 Plan expired on February 14, 2017. The 2007 Plan will continue to govern outstanding awards granted under the 2007 Plan.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&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 Options&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A summary of our stock option activity for the year ended December&#160;31, 2020 is as follows (number of shares in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:53.219%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.394%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.394%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.397%"/&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;Number&#160;of 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;Weighted Average Exercise Price&#160;per&#160;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;Weighted Average Remaining Contractual&#160;Life in Years&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options outstanding as of December&#160;31, 2019&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:10pt;font-weight:400;line-height:100%"&gt;1,342&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;11.84&#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:2px 1pt;text-align:right;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;5.9&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options 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:10pt;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:10pt;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="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;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options 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:10pt;font-weight:400;line-height:100%"&gt;(119)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;6.93&#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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options cancelled/forfeited&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:10pt;font-weight:400;line-height:100%"&gt;(55)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;23.75&#160;&lt;/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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options outstanding 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 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:10pt;font-weight:400;line-height:100%"&gt;1,168&#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;padding:2px 0 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;$&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:10pt;font-weight:400;line-height:100%"&gt;11.77&#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:right;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;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:9pt"&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;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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;At December&#160;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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options vested and expected to vest&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:10pt;font-weight:400;line-height:100%"&gt;1,168&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;11.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 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:10pt;font-weight:400;line-height:100%"&gt;5.0&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options exercisable&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:10pt;font-weight:400;line-height:100%"&gt;1,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 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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;11.77&#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:right;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;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&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 year ended&#160;December&#160;31, 2020, 77,000 PSOs vested based on the achievement of 95% of the pre-established free cash flow performance target for the year ended December 31, 2019, and 40,000 PSOs vested based on the achievement of 115% of the pre-established gross margin target for the year ended December 31, 2019.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Our stock-based compensation expense for stock options for the years ended December&#160;31, 2020 was not material. Our stock-based compensation expense for stock options for the years ended December 31, 2019 and 2018 was $0.6 million and $1.6 million, respectively. At December&#160;31, 2020, the total remaining stock-based compensation expense for unvested stock options was not material.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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 options is estimated on their date of grant using the Black-Scholes option-pricing model. No stock options were granted during the years ended December&#160;31, 2020, 2019 or 2018. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The total intrinsic value of options exercised in 2020, 2019 and 2018 was $17.9 million, $11.5&#160;million, and $7.5 million, respectively. This intrinsic value represents the difference between the fair value of our common stock on the date of &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;exercise and the exercise price of each option. Based on the fair value of our common stock at December&#160;31, 2020, the total intrinsic value of all outstanding options, exercisable options, and options vested and expected to vest was $196.6 million. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The excess tax benefit realized from option exercises during the years ended December&#160;31, 2020, 2019 and 2018 was $30.1&#160;million, $20.5 million, and $7.7 million, respectively. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&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;Restricted Stock Units&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A summary of activity in connection with our RSUs for the year ended December&#160;31, 2020 is as follows (number of shares in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:11pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.442%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.322%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.470%"/&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;Number&#160;of 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;Weighted Average Grant&#160;Date Fair&#160;Value&#160;per&#160;Share&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Unvested as of December 31, 2019&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:10pt;font-weight:400;line-height:100%"&gt;646&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;52.42&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;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:10pt;font-weight:400;line-height:100%"&gt;174&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;112.24&#160;&lt;/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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Vested&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:10pt;font-weight:400;line-height:100%"&gt;(268)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;36.58&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Forfeited&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:10pt;font-weight:400;line-height:100%"&gt;(69)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;70.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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Unvested 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 colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;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:10pt;font-weight:400;line-height:100%"&gt;483&#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;padding:2px 0 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;$&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:10pt;font-weight:400;line-height:100%"&gt;80.20&#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&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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&#160;year ended&#160;December&#160;31, 2020, we granted a total of&#160;160,000&#160;RSUs that are subject to time-based vesting in equal annual installments over four years, and 14,000 PSUs that are subject to vesting based on the achievement of pre-established consolidated net revenue growth targets for the years ending December 31, 2020, 2021 and 2022, assuming continued employment throughout the performance period. The number of PSUs granted, as included in the above table, assumes achievement of the performance metric at 100% of the performance target. The actual number of shares to be issued at the end of the performance period will range from 0% to 100% of the initial target awards. Achievement of the performance metric between 100% and 150% of the performance target will result in a performance-based cash bonus payment between 100% and 165% of the initial target awards.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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&#160;year ended&#160;December&#160;31, 2020,&#160;84,000 PSUs vested and 4,000 PSUs were cancelled based on the achievement of 95% of the pre-established free cash flow performance target for the year ended December 31, 2019. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Included in the unvested RSUs and PSUs at&#160;December&#160;31, 2020 are 32,000 and 82,000 PSUs granted in 2019 and 2018, respectively. Of these PSUs, 48,000 are subject to vesting based on the achievement of a pre-established consolidated net revenue growth target for the year ending December 31, 2020, 42,000 are subject to vesting based on the achievement of a pre-established consolidated net revenue growth target for the year ending December 31, 2021, and 24,000 are subject to vesting based on the achievement of a pre-established consolidated net revenue growth target for the year ending December 31, 2022. The number of PSUs granted assumes achievement of the performance metric at 100% of the performance target. The actual number of shares to be issued at the end of the performance period will range from 0% to 100% of the initial target awards. Achievement of the performance metric between 100% and 150% of the performance target will result in a performance-based cash bonus payment between 100% and 165% of the initial target awards.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We recognize expense for the PSUs based on the grant date fair value of the PSUs that we determine are probable of vesting. Adjustments to compensation expense are made each period based on changes in our estimate of the number of PSUs that are probable of vesting. Our stock-based compensation expense for the RSUs and PSUs for the years ended December&#160;31, 2020, 2019 and 2018, was $10.4 million, $8.3 million and $5.5 million, respectively. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;At December&#160;31, 2020, the total remaining stock-based compensation expense for these RSUs was $23.4 million, which is expected to be recognized over a weighted average period of 2.2 years.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&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;Restricted Stock Awards&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A summary of activity in connection with our RSAs for the year ended December&#160;31, 2020 is as follows (number of shares in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:61.070%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.762%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:18.402%"/&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;Number&#160;of 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;Weighted- Average Grant&#160;Date Fair&#160;Value&#160;per&#160;Share&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Unvested as of December 31, 2019&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:10pt;font-weight:400;line-height:100%"&gt;5&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;105.88&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;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:10pt;font-weight:400;line-height:100%"&gt;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:10pt;font-weight:400;line-height:100%"&gt;153.41&#160;&lt;/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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Vested&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:10pt;font-weight:400;line-height:100%"&gt;(5)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;105.88&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Forfeited&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:10pt;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:10pt;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Unvested 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 colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;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:10pt;font-weight:400;line-height:100%"&gt;5&#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;padding:2px 0 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;$&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:10pt;font-weight:400;line-height:100%"&gt;153.41&#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-bottom:6pt;margin-top:12pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We have the right to repurchase any unvested RSAs subject to certain conditions. RSAs vest over a one-year period. For the years ended December&#160;31, 2020, 2019 and 2018, we recognized stock-based compensation expense for RSAs of $0.7 million, $0.3 million and $0.3 million, respectively. During 2020, the grant date fair value of the shares vested was $0.5 million.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;At December&#160;31, 2020, the total remaining stock-based compensation expense for unvested RSAs was $0.4 million, which is expected to be recognized over a weighted average period of 0.7 years.&lt;/span&gt;&lt;/div&gt;</us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock>
    <us-gaap:DeferredCompensationArrangementWithIndividualCommonStockReservedForFutureIssuance
      contextRef="i3ad85cad9ecc44e0a7d7902695ac893b_I20151231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzIyOA_bcc0e0cd-743e-45af-8026-f6c7c6685a3e"
      unitRef="shares">2000000</us-gaap:DeferredCompensationArrangementWithIndividualCommonStockReservedForFutureIssuance>
    <us-gaap:DeferredCompensationArrangementWithIndividualCommonStockReservedForFutureIssuance
      contextRef="i8a3bcdd9b57444c5a51e029d3423b314_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzc0Mw_614705a8-beb8-474e-872e-7efc757a1492"
      unitRef="shares">4026493</us-gaap:DeferredCompensationArrangementWithIndividualCommonStockReservedForFutureIssuance>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod
      contextRef="i99819e9e20e74b18823f1ff272f2c656_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzE4MjI_9a26eb8f-0e55-4386-b576-69ec45f9372b">P10Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod>
    <us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzk0MTg_57bc4cd5-fafd-46e8-92b7-e48a914efe22">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A summary of our stock option activity for the year ended December&#160;31, 2020 is as follows (number of shares in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:53.219%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.394%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.394%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.397%"/&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;Number&#160;of 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;Weighted Average Exercise Price&#160;per&#160;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;Weighted Average Remaining Contractual&#160;Life in Years&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options outstanding as of December&#160;31, 2019&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:10pt;font-weight:400;line-height:100%"&gt;1,342&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;11.84&#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:2px 1pt;text-align:right;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;5.9&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options 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:10pt;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:10pt;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="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;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options 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:10pt;font-weight:400;line-height:100%"&gt;(119)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;6.93&#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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options cancelled/forfeited&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:10pt;font-weight:400;line-height:100%"&gt;(55)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;23.75&#160;&lt;/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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options outstanding 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 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:10pt;font-weight:400;line-height:100%"&gt;1,168&#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;padding:2px 0 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;$&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:10pt;font-weight:400;line-height:100%"&gt;11.77&#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:right;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;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:9pt"&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;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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;At December&#160;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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options vested and expected to vest&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:10pt;font-weight:400;line-height:100%"&gt;1,168&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;11.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 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:10pt;font-weight:400;line-height:100%"&gt;5.0&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options exercisable&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:10pt;font-weight:400;line-height:100%"&gt;1,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 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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;11.77&#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:right;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;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkODE4YjZiMGJkZTQ0MjY0YWU2NTc3ODY5ODQ0NzIxOS90YWJsZXJhbmdlOmQ4MThiNmIwYmRlNDQyNjRhZTY1Nzc4Njk4NDQ3MjE5XzEtMi0xLTEtMA_884c07b5-317a-4b8c-8c52-d16472ba0fcc"
      unitRef="shares">1342000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkODE4YjZiMGJkZTQ0MjY0YWU2NTc3ODY5ODQ0NzIxOS90YWJsZXJhbmdlOmQ4MThiNmIwYmRlNDQyNjRhZTY1Nzc4Njk4NDQ3MjE5XzEtNC0xLTEtMA_54166532-934a-424f-9d98-6b09e43e520b"
      unitRef="usdPerShare">11.84</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkODE4YjZiMGJkZTQ0MjY0YWU2NTc3ODY5ODQ0NzIxOS90YWJsZXJhbmdlOmQ4MThiNmIwYmRlNDQyNjRhZTY1Nzc4Njk4NDQ3MjE5XzEtNi0xLTEtMA_09fdb2f1-01e5-4b3a-a2df-a23bce946c13">P5Y10M24D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkODE4YjZiMGJkZTQ0MjY0YWU2NTc3ODY5ODQ0NzIxOS90YWJsZXJhbmdlOmQ4MThiNmIwYmRlNDQyNjRhZTY1Nzc4Njk4NDQ3MjE5XzItMi0xLTEtMA_8f1f434e-ccfa-43c5-adcd-67ce6957c9b3"
      unitRef="shares">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkODE4YjZiMGJkZTQ0MjY0YWU2NTc3ODY5ODQ0NzIxOS90YWJsZXJhbmdlOmQ4MThiNmIwYmRlNDQyNjRhZTY1Nzc4Njk4NDQ3MjE5XzItNC0xLTEtMA_404e5996-7faf-4dfa-a355-d9e977bea2e5"
      unitRef="usdPerShare">0</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkODE4YjZiMGJkZTQ0MjY0YWU2NTc3ODY5ODQ0NzIxOS90YWJsZXJhbmdlOmQ4MThiNmIwYmRlNDQyNjRhZTY1Nzc4Njk4NDQ3MjE5XzMtMi0xLTEtMA_921f61b9-7a6b-4eab-80f0-ed6e6068da1f"
      unitRef="shares">119000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkODE4YjZiMGJkZTQ0MjY0YWU2NTc3ODY5ODQ0NzIxOS90YWJsZXJhbmdlOmQ4MThiNmIwYmRlNDQyNjRhZTY1Nzc4Njk4NDQ3MjE5XzMtNC0xLTEtMA_8e542516-0ad9-4689-a89e-f45187c338dc"
      unitRef="usdPerShare">6.93</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkODE4YjZiMGJkZTQ0MjY0YWU2NTc3ODY5ODQ0NzIxOS90YWJsZXJhbmdlOmQ4MThiNmIwYmRlNDQyNjRhZTY1Nzc4Njk4NDQ3MjE5XzQtMi0xLTEtMA_8868c94b-3c08-4e0a-908e-f252f6db8103"
      unitRef="shares">55000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkODE4YjZiMGJkZTQ0MjY0YWU2NTc3ODY5ODQ0NzIxOS90YWJsZXJhbmdlOmQ4MThiNmIwYmRlNDQyNjRhZTY1Nzc4Njk4NDQ3MjE5XzQtNC0xLTEtMA_b75bdad9-9372-412f-ac80-648d7e65a118"
      unitRef="usdPerShare">23.75</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkODE4YjZiMGJkZTQ0MjY0YWU2NTc3ODY5ODQ0NzIxOS90YWJsZXJhbmdlOmQ4MThiNmIwYmRlNDQyNjRhZTY1Nzc4Njk4NDQ3MjE5XzUtMi0xLTEtMA_ff32f253-525c-497e-bbce-ff6eef4f0951"
      unitRef="shares">1168000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkODE4YjZiMGJkZTQ0MjY0YWU2NTc3ODY5ODQ0NzIxOS90YWJsZXJhbmdlOmQ4MThiNmIwYmRlNDQyNjRhZTY1Nzc4Njk4NDQ3MjE5XzUtNC0xLTEtMA_e7089fb1-fe79-4c12-8c3c-97b0c002502d"
      unitRef="usdPerShare">11.77</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkODE4YjZiMGJkZTQ0MjY0YWU2NTc3ODY5ODQ0NzIxOS90YWJsZXJhbmdlOmQ4MThiNmIwYmRlNDQyNjRhZTY1Nzc4Njk4NDQ3MjE5XzUtNi0xLTEtMA_c42dd6d7-bd09-4214-9676-0cb8d022875f">P5Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkODE4YjZiMGJkZTQ0MjY0YWU2NTc3ODY5ODQ0NzIxOS90YWJsZXJhbmdlOmQ4MThiNmIwYmRlNDQyNjRhZTY1Nzc4Njk4NDQ3MjE5XzgtMi0xLTEtMA_73e91e64-26cf-4980-be81-f40a1a183a18"
      unitRef="shares">1168000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkODE4YjZiMGJkZTQ0MjY0YWU2NTc3ODY5ODQ0NzIxOS90YWJsZXJhbmdlOmQ4MThiNmIwYmRlNDQyNjRhZTY1Nzc4Njk4NDQ3MjE5XzgtNC0xLTEtMA_623bd23a-2853-49ea-8a82-7a3a9f9d34fe"
      unitRef="usdPerShare">11.77</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkODE4YjZiMGJkZTQ0MjY0YWU2NTc3ODY5ODQ0NzIxOS90YWJsZXJhbmdlOmQ4MThiNmIwYmRlNDQyNjRhZTY1Nzc4Njk4NDQ3MjE5XzgtNi0xLTEtMA_8d39ce89-7a82-4114-a13d-efe5aca6319f">P5Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkODE4YjZiMGJkZTQ0MjY0YWU2NTc3ODY5ODQ0NzIxOS90YWJsZXJhbmdlOmQ4MThiNmIwYmRlNDQyNjRhZTY1Nzc4Njk4NDQ3MjE5XzktMi0xLTEtMA_a6454609-a572-4f41-b57f-0dba1a2472e1"
      unitRef="shares">1168000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkODE4YjZiMGJkZTQ0MjY0YWU2NTc3ODY5ODQ0NzIxOS90YWJsZXJhbmdlOmQ4MThiNmIwYmRlNDQyNjRhZTY1Nzc4Njk4NDQ3MjE5XzktNC0xLTEtMA_70a3fea0-127f-4ce7-b543-9c15272c3a6d"
      unitRef="usdPerShare">11.77</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkODE4YjZiMGJkZTQ0MjY0YWU2NTc3ODY5ODQ0NzIxOS90YWJsZXJhbmdlOmQ4MThiNmIwYmRlNDQyNjRhZTY1Nzc4Njk4NDQ3MjE5XzktNi0xLTEtMA_7b340508-b753-4fde-9c7f-51816599ecf9">P5Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares
      contextRef="i1b2e06d0b70d42e9bb04a8e372756b02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIwNjE_f954efa5-ea71-4653-b7e7-558b90234f99"
      unitRef="shares">77000</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares>
    <appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAchievementOfAwardTargetPerformanceMetric
      contextRef="id458400680174ae3a9d186337b40caf5_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIwNzA_80a15fc3-a15e-4291-8fb6-02f87371007e"
      unitRef="number">0.95</appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAchievementOfAwardTargetPerformanceMetric>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares
      contextRef="iccbf8db6b3764aae825f3fe2535d2c10_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIwNzU_0a213fd6-432c-473a-b737-a8d196de9151"
      unitRef="shares">40000</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares>
    <appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAchievementOfAwardTargetPerformanceMetric
      contextRef="id1b662444b08435dbe2208bd233d411a_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIwODM_939613be-d589-4b33-a286-85cc792e823a"
      unitRef="number">1.15</appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAchievementOfAwardTargetPerformanceMetric>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i26426ceddf214a1ea5914e18c010cc38_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzQ2MDc_06cce1a3-eed4-4254-a62d-476f46d73e01"
      unitRef="usd">600000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i4fd6f08a9bb84b028249c0fdce83d8bb_D20180101-20181231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzQ2MTU_a6ecf2b6-e876-4c5a-b6d0-d9c196c0aefb"
      unitRef="usd">1600000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i5a75de892bd14090845814ed9650eb72_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIyOTY_d10cc4b5-cccf-4e5b-98ad-62003fb693bf"
      unitRef="usd">0</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3NzYyMDQ_41695bcb-fd3c-4d41-a007-ce7ee045a1aa"
      unitRef="shares">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3NzYyMDQ_4aa4f664-fb7a-4337-9b38-a04b56303501"
      unitRef="shares">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3NzYyMDQ_5f1809e4-9137-4517-9bb0-3b21469fc4aa"
      unitRef="shares">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzUwNjE_4ce5ba52-7a8c-4bca-901f-18bd588b5077"
      unitRef="usd">17900000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzQ5NDc4MDIzMzQ0NzI_01034330-4cbd-4531-a6fb-d0ae1325f1ec"
      unitRef="usd">11500000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzUwNjU_8377c22c-26be-4bed-91f1-9bbeebab09c2"
      unitRef="usd">7500000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzUzNTI_314bed50-1e52-4ac3-bdc5-c7665a189b23"
      unitRef="usd">196600000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue>
    <us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromExerciseOfStockOptions
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzI3NDg3NzkwOTQ4MjM_62a63239-18b8-4c5f-9254-510b03ff36d2"
      unitRef="usd">30100000</us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromExerciseOfStockOptions>
    <us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromExerciseOfStockOptions
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzU1OTU_79539a43-6173-4982-85cb-0f87b15319a2"
      unitRef="usd">20500000</us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromExerciseOfStockOptions>
    <us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromExerciseOfStockOptions
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzU1OTk_9479bef5-98df-4328-90f8-eafc402e65c9"
      unitRef="usd">7700000</us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromExerciseOfStockOptions>
    <us-gaap:ScheduleOfNonvestedRestrictedStockUnitsActivityTableTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzk0MDQ_8172e1ea-b7a1-4505-b2b0-a995c94da062">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A summary of activity in connection with our RSUs for the year ended December&#160;31, 2020 is as follows (number of shares in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:11pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.442%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.322%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.470%"/&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;Number&#160;of 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;Weighted Average Grant&#160;Date Fair&#160;Value&#160;per&#160;Share&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Unvested as of December 31, 2019&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:10pt;font-weight:400;line-height:100%"&gt;646&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;52.42&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;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:10pt;font-weight:400;line-height:100%"&gt;174&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;112.24&#160;&lt;/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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Vested&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:10pt;font-weight:400;line-height:100%"&gt;(268)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;36.58&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Forfeited&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:10pt;font-weight:400;line-height:100%"&gt;(69)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;70.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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Unvested 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 colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;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:10pt;font-weight:400;line-height:100%"&gt;483&#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;padding:2px 0 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;$&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:10pt;font-weight:400;line-height:100%"&gt;80.20&#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;</us-gaap:ScheduleOfNonvestedRestrictedStockUnitsActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i950a2961c7164c988b3443285bc84af6_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkNDdmMTAzMWY4MTE0MTFjOTU1NDI2NWRlMGZiMzViNi90YWJsZXJhbmdlOmQ0N2YxMDMxZjgxMTQxMWM5NTU0MjY1ZGUwZmIzNWI2XzEtMi0xLTEtMA_4688bee9-5fba-4c18-bf88-96871213ade0"
      unitRef="shares">646000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i950a2961c7164c988b3443285bc84af6_I20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkNDdmMTAzMWY4MTE0MTFjOTU1NDI2NWRlMGZiMzViNi90YWJsZXJhbmdlOmQ0N2YxMDMxZjgxMTQxMWM5NTU0MjY1ZGUwZmIzNWI2XzEtNC0xLTEtMA_9e99b5c5-0972-4440-a0b5-2c6bd22d3c71"
      unitRef="usdPerShare">52.42</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="i8d049bdfbdf1486aaf73e64df069c75a_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkNDdmMTAzMWY4MTE0MTFjOTU1NDI2NWRlMGZiMzViNi90YWJsZXJhbmdlOmQ0N2YxMDMxZjgxMTQxMWM5NTU0MjY1ZGUwZmIzNWI2XzItMi0xLTEtMA_0fc69ed3-0052-4bf5-91f8-5c29ea116b09"
      unitRef="shares">174000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i8d049bdfbdf1486aaf73e64df069c75a_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkNDdmMTAzMWY4MTE0MTFjOTU1NDI2NWRlMGZiMzViNi90YWJsZXJhbmdlOmQ0N2YxMDMxZjgxMTQxMWM5NTU0MjY1ZGUwZmIzNWI2XzItNC0xLTEtMA_94bd7ae9-6670-4301-9ab1-f449644dc34d"
      unitRef="usdPerShare">112.24</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="i8d049bdfbdf1486aaf73e64df069c75a_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkNDdmMTAzMWY4MTE0MTFjOTU1NDI2NWRlMGZiMzViNi90YWJsZXJhbmdlOmQ0N2YxMDMxZjgxMTQxMWM5NTU0MjY1ZGUwZmIzNWI2XzMtMi0xLTEtMA_7b347750-edf6-4901-8137-f915cdc91702"
      unitRef="shares">268000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="i8d049bdfbdf1486aaf73e64df069c75a_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkNDdmMTAzMWY4MTE0MTFjOTU1NDI2NWRlMGZiMzViNi90YWJsZXJhbmdlOmQ0N2YxMDMxZjgxMTQxMWM5NTU0MjY1ZGUwZmIzNWI2XzMtNC0xLTEtMA_19c83f16-5821-49a4-8bc4-4ac4d35606db"
      unitRef="usdPerShare">36.58</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
      contextRef="i8d049bdfbdf1486aaf73e64df069c75a_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkNDdmMTAzMWY4MTE0MTFjOTU1NDI2NWRlMGZiMzViNi90YWJsZXJhbmdlOmQ0N2YxMDMxZjgxMTQxMWM5NTU0MjY1ZGUwZmIzNWI2XzQtMi0xLTEtMA_b22d1aed-c8d2-4c59-9920-6aef8d666c75"
      unitRef="shares">69000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
      contextRef="i8d049bdfbdf1486aaf73e64df069c75a_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkNDdmMTAzMWY4MTE0MTFjOTU1NDI2NWRlMGZiMzViNi90YWJsZXJhbmdlOmQ0N2YxMDMxZjgxMTQxMWM5NTU0MjY1ZGUwZmIzNWI2XzQtNC0xLTEtMA_dd9a4508-408a-4452-9d5e-beadd40bc4a6"
      unitRef="usdPerShare">70.52</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i4bb3339d6c794033b847eb68961c8967_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkNDdmMTAzMWY4MTE0MTFjOTU1NDI2NWRlMGZiMzViNi90YWJsZXJhbmdlOmQ0N2YxMDMxZjgxMTQxMWM5NTU0MjY1ZGUwZmIzNWI2XzUtMi0xLTEtMA_9d82409a-30d2-4e55-bcbf-f7d3859714e4"
      unitRef="shares">483000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i4bb3339d6c794033b847eb68961c8967_I20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTpkNDdmMTAzMWY4MTE0MTFjOTU1NDI2NWRlMGZiMzViNi90YWJsZXJhbmdlOmQ0N2YxMDMxZjgxMTQxMWM5NTU0MjY1ZGUwZmIzNWI2XzUtNC0xLTEtMA_d8a7e036-0579-406b-a78d-33f1307757b4"
      unitRef="usdPerShare">80.20</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="i14bdef26eb4144e79975801988ed103a_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIwODk_a88f1628-9cc8-4f11-8f48-8b0aefa3a901"
      unitRef="shares">160000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="i14bdef26eb4144e79975801988ed103a_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIxMDg_d055a53f-09d8-4a43-bf6c-4da984eaeeb2">P4Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="ib7afd0848c9a40caacc99e8e8facc49e_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIxMTA_b5e571af-36fd-4b19-837b-ca68a2db3340"
      unitRef="shares">14000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAwardTargetPerformanceMetric
      contextRef="id4243e69cf1948019aae6107533fa3cc_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIxMTg_3f375004-0a38-4436-88b3-ddb529e25a0b"
      unitRef="number">1</appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAwardTargetPerformanceMetric>
    <appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAwardTargetPerformanceMetric
      contextRef="ibf5c2c756ac0462282be61345828597f_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIxMjQ_3f5cc00c-5442-4d0b-97ff-80e9366bffc2"
      unitRef="number">0</appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAwardTargetPerformanceMetric>
    <appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAwardTargetPerformanceMetric
      contextRef="i0bcca23ab6324e1983320926fcd91402_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIxMjk_a91d1bef-4074-4432-8d8f-ab74a21e7371"
      unitRef="number">1</appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAwardTargetPerformanceMetric>
    <appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAwardTargetPerformanceMetric
      contextRef="id6e5225ba00e4ca9b59edf699af0b36b_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIxMzU_68283db9-683f-49e7-a1ca-cead4e01d6ef"
      unitRef="number">1</appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAwardTargetPerformanceMetric>
    <appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAwardTargetPerformanceMetric
      contextRef="i7f02992a4d704a7ea6286f30ad53e8f9_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIxNDE_3e7c3093-6b6c-4ae4-bf48-fc65ec1a8d19"
      unitRef="number">1.50</appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAwardTargetPerformanceMetric>
    <appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPerformanceBasedCashBonusPaymentPercent
      contextRef="i3cd044a5772d4b08a888332b9e2800e0_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIxNDc_a54b8ba5-a63d-4337-ab9a-a07edbe2757b"
      unitRef="number">1</appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPerformanceBasedCashBonusPaymentPercent>
    <appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPerformanceBasedCashBonusPaymentPercent
      contextRef="i073aee93ba424d17a2d7685bcc354bdd_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIxNTM_4a2e8270-2953-4b8f-8d6a-33c54158502b"
      unitRef="number">1.65</appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPerformanceBasedCashBonusPaymentPercent>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="ib7afd0848c9a40caacc99e8e8facc49e_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIxNTk_b4e5140d-a6fe-48f4-9bf6-d26bd1d7ac27"
      unitRef="shares">84000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="iafd019a04c294eb9b38b19f3a4b4e49f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIxNjc_05b912b6-60e5-42d8-a1c5-a20e4fb0e952"
      unitRef="shares">4000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAchievementOfAwardTargetPerformanceMetric
      contextRef="i7135702889054051b650f307ee947896_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIxNzQ_53bc7827-d0ff-4fae-8c60-362d13b76608"
      unitRef="number">0.95</appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAchievementOfAwardTargetPerformanceMetric>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="i230571d2508e457e8827faf8a862be19_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIxNzk_205923d7-4ca0-4dba-889b-1ab96a61bf2e"
      unitRef="shares">32000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="ie9950d2e74804d0ca847c54c886bed89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIxODc_4e7a5ec6-cbc8-4523-89f2-b53555df6665"
      unitRef="shares">82000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="i5b9a767206d24226b594e699c010c7dd_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIxOTU_c42c5c90-3f6a-430b-bf90-d51c8e85eedc"
      unitRef="shares">48000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="ibf610a2cad524f9aae9a0350522654f5_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIyMDM_4967c0b1-6113-4b2f-b6e1-2be41c5feb70"
      unitRef="shares">42000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="i75b755e3278244d7a45ede24ced94bb7_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIyMTE_d2f4e0a9-febf-4d53-bd91-60b884da4e80"
      unitRef="shares">24000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAwardTargetPerformanceMetric
      contextRef="i097807896b5441218874897d2974c0ea_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIyMTk_e435661c-5dfa-47ed-906d-d453fea6ed5e"
      unitRef="number">1</appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAwardTargetPerformanceMetric>
    <appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAwardTargetPerformanceMetric
      contextRef="i815f844a27394208bed6e807911fba9d_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIyMjU_a876a890-2fae-4f50-abe5-c53517c3870c"
      unitRef="number">0</appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAwardTargetPerformanceMetric>
    <appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAwardTargetPerformanceMetric
      contextRef="i091b6e47073340c4a614455889151648_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIyMzA_7d768852-3b14-4ee4-b04a-8fe275c8281c"
      unitRef="number">1</appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAwardTargetPerformanceMetric>
    <appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAwardTargetPerformanceMetric
      contextRef="i33ced037467841c095de718193b884c7_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIyMzY_681e4c88-2030-4af4-a7b8-03928802b05c"
      unitRef="number">1</appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAwardTargetPerformanceMetric>
    <appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAwardTargetPerformanceMetric
      contextRef="i4be262ef22eb49f0b6bae988c591d0eb_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIyNDI_56469ae9-c76f-432b-ad01-15022a781bba"
      unitRef="number">1.50</appf:SharebasedCompensationArrangementsbySharebasedPaymentAwardPercentOfAwardTargetPerformanceMetric>
    <appf:ShareBasedCompensationArrangementsByShareBasedPaymentAwardPercentOfCashBonusPaymentOnInitialTargets
      contextRef="iea0b999a93144a26abf77107d3808e2b_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIyNDg_e01e2dc5-f788-4203-bc76-ae0a8c483eab"
      unitRef="number">1</appf:ShareBasedCompensationArrangementsByShareBasedPaymentAwardPercentOfCashBonusPaymentOnInitialTargets>
    <appf:ShareBasedCompensationArrangementsByShareBasedPaymentAwardPercentOfCashBonusPaymentOnInitialTargets
      contextRef="i5f352c5f20f94c8aa56aae90523e9892_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIyNTQ_1c528119-1071-40f2-8377-b12721144598"
      unitRef="number">1.65</appf:ShareBasedCompensationArrangementsByShareBasedPaymentAwardPercentOfCashBonusPaymentOnInitialTargets>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i8d049bdfbdf1486aaf73e64df069c75a_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzg1NDM_eb3a700b-a009-4631-8d1b-d04a92d38873"
      unitRef="usd">10400000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ie0151233bc0447fa88f5fa2684960e5a_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzg1NDc_54e0ce51-dfb8-41fc-ad9f-564066eed476"
      unitRef="usd">8300000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i35c4418faaa14a79b23a2cd2c7b2b434_D20180101-20181231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzQ5NDc4MDIzMzQ1MzI_fb9163e7-293c-4195-a4f5-a22784a8ab59"
      unitRef="usd">5500000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions
      contextRef="i4bb3339d6c794033b847eb68961c8967_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzg2NTI_85c1a9a3-5b25-4aa3-8766-c5779b8dadac"
      unitRef="usd">23400000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="i8d049bdfbdf1486aaf73e64df069c75a_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzg3MjU_3874e743-1517-4d8e-8f61-8fadab49c343">P2Y2M12D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <us-gaap:NonvestedRestrictedStockSharesActivityTableTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzk0MDc_a0112c19-03ed-4282-b3c1-03fef373eca1">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A summary of activity in connection with our RSAs for the year ended December&#160;31, 2020 is as follows (number of shares in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:61.070%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.762%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:18.402%"/&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;Number&#160;of 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;Weighted- Average Grant&#160;Date Fair&#160;Value&#160;per&#160;Share&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Unvested as of December 31, 2019&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:10pt;font-weight:400;line-height:100%"&gt;5&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;105.88&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;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:10pt;font-weight:400;line-height:100%"&gt;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:10pt;font-weight:400;line-height:100%"&gt;153.41&#160;&lt;/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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Vested&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:10pt;font-weight:400;line-height:100%"&gt;(5)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;105.88&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Forfeited&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:10pt;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:10pt;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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Unvested 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 colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;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:10pt;font-weight:400;line-height:100%"&gt;5&#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;padding:2px 0 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;$&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:10pt;font-weight:400;line-height:100%"&gt;153.41&#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;</us-gaap:NonvestedRestrictedStockSharesActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i6dc94e99757f4efe807c08d12dcb5eaf_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTplZGI0MjdmMjE5MzY0MzExODM0NTI2NWVmMDVhY2Y3Ni90YWJsZXJhbmdlOmVkYjQyN2YyMTkzNjQzMTE4MzQ1MjY1ZWYwNWFjZjc2XzEtMi0xLTEtMA_5758d120-2882-47e7-bf15-7ddf2a54fa5b"
      unitRef="shares">5000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i6dc94e99757f4efe807c08d12dcb5eaf_I20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTplZGI0MjdmMjE5MzY0MzExODM0NTI2NWVmMDVhY2Y3Ni90YWJsZXJhbmdlOmVkYjQyN2YyMTkzNjQzMTE4MzQ1MjY1ZWYwNWFjZjc2XzEtNC0xLTEtMA_6f496a8c-2fc3-403b-8355-e67570904465"
      unitRef="usdPerShare">105.88</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="ic8750d7d40ba425a884083a933e676c7_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTplZGI0MjdmMjE5MzY0MzExODM0NTI2NWVmMDVhY2Y3Ni90YWJsZXJhbmdlOmVkYjQyN2YyMTkzNjQzMTE4MzQ1MjY1ZWYwNWFjZjc2XzItMi0xLTEtMA_3e91b2f5-f42e-41ae-b0c4-cb409304f843"
      unitRef="shares">5000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="ic8750d7d40ba425a884083a933e676c7_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTplZGI0MjdmMjE5MzY0MzExODM0NTI2NWVmMDVhY2Y3Ni90YWJsZXJhbmdlOmVkYjQyN2YyMTkzNjQzMTE4MzQ1MjY1ZWYwNWFjZjc2XzItNC0xLTEtMA_40ecd8d6-b10e-486a-a399-73a7dc4fa5a5"
      unitRef="usdPerShare">153.41</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="ic8750d7d40ba425a884083a933e676c7_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTplZGI0MjdmMjE5MzY0MzExODM0NTI2NWVmMDVhY2Y3Ni90YWJsZXJhbmdlOmVkYjQyN2YyMTkzNjQzMTE4MzQ1MjY1ZWYwNWFjZjc2XzMtMi0xLTEtMA_bc8f7631-d8fd-4b10-85e0-37141271ea44"
      unitRef="shares">5000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="ic8750d7d40ba425a884083a933e676c7_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTplZGI0MjdmMjE5MzY0MzExODM0NTI2NWVmMDVhY2Y3Ni90YWJsZXJhbmdlOmVkYjQyN2YyMTkzNjQzMTE4MzQ1MjY1ZWYwNWFjZjc2XzMtNC0xLTEtMA_e36e7a4c-042a-442f-9dc4-9335dd26aac5"
      unitRef="usdPerShare">105.88</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
      contextRef="ic8750d7d40ba425a884083a933e676c7_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTplZGI0MjdmMjE5MzY0MzExODM0NTI2NWVmMDVhY2Y3Ni90YWJsZXJhbmdlOmVkYjQyN2YyMTkzNjQzMTE4MzQ1MjY1ZWYwNWFjZjc2XzQtMi0xLTEtMA_1f7f3dc3-17f6-4a91-86c2-571467c10f3e"
      unitRef="shares">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
      contextRef="ic8750d7d40ba425a884083a933e676c7_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTplZGI0MjdmMjE5MzY0MzExODM0NTI2NWVmMDVhY2Y3Ni90YWJsZXJhbmdlOmVkYjQyN2YyMTkzNjQzMTE4MzQ1MjY1ZWYwNWFjZjc2XzQtNC0xLTEtMA_b43a4412-fe7d-4c15-a8c9-fac7f0bbf3b4"
      unitRef="usdPerShare">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i23d98b4f05bb4bca84eb98f630a8addd_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTplZGI0MjdmMjE5MzY0MzExODM0NTI2NWVmMDVhY2Y3Ni90YWJsZXJhbmdlOmVkYjQyN2YyMTkzNjQzMTE4MzQ1MjY1ZWYwNWFjZjc2XzUtMi0xLTEtMA_c1a60929-9101-43de-882f-24cf6e909518"
      unitRef="shares">5000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i23d98b4f05bb4bca84eb98f630a8addd_I20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90YWJsZTplZGI0MjdmMjE5MzY0MzExODM0NTI2NWVmMDVhY2Y3Ni90YWJsZXJhbmdlOmVkYjQyN2YyMTkzNjQzMTE4MzQ1MjY1ZWYwNWFjZjc2XzUtNC0xLTEtMA_42581f68-08ec-4ced-bec9-2da5b8e8779f"
      unitRef="usdPerShare">153.41</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="ic8750d7d40ba425a884083a933e676c7_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzY1OTcwNjk3OTIzMDQ_60c7ad48-7cdf-4711-9853-44a1d447e491">P1Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ic8750d7d40ba425a884083a933e676c7_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzkxNTE_2d87a75b-f388-4fce-b261-daadd30ab548"
      unitRef="usd">700000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ib7ee5461abdf4bedbe15c2460cf8b782_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzkxNTU_8ff1719a-c20e-4331-9c41-bc0b5c099071"
      unitRef="usd">300000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ifeb3fb87ab7a4cd1941bfb8991467ea9_D20180101-20181231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzkxNjI_6a431f6b-2f90-4a12-9e69-826e71b1c94a"
      unitRef="usd">300000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue
      contextRef="ic8750d7d40ba425a884083a933e676c7_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzkyNDI_fec3e7a4-41ab-4bc8-a861-97c44a653476"
      unitRef="usd">500000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions
      contextRef="i23d98b4f05bb4bca84eb98f630a8addd_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzkzMjk_420cc8a0-4b6f-41a1-bdcf-2a074c400044"
      unitRef="usd">400000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="ic8750d7d40ba425a884083a933e676c7_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNDUvZnJhZzoyNjAwN2Q3YWYwYjI0MGVlOTk1MzFmNmNiMjFlOGRjZS90ZXh0cmVnaW9uOjI2MDA3ZDdhZjBiMjQwZWU5OTUzMWY2Y2IyMWU4ZGNlXzk0MDI_6284d273-487d-44af-888c-9bddfaea26af">P0Y8M12D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <us-gaap:IncomeTaxDisclosureTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90ZXh0cmVnaW9uOjNlNTU5ODA0ZGU1NzQ4NGNhMzhhYjgyNGFmMTVlNTA5XzM0Mzk_5674c5e3-27fa-4c4f-ab10-3eca7fbfed1d">Income Taxes&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&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 year ended December&#160;31, 2020, we recorded income tax expense of $38.4 million. The tax provision for the year ended December&#160;31, 2020 includes tax expense of $51.3&#160;million relating to the MyCase Transaction which includes $52.3&#160;million of current tax expense on the gain on the sale of MyCase, less a $1.0&#160;million benefit on the reversal of deferred tax liabilities relating to MyCase. For tax purposes, we plan to file an election to treat the transaction as a sale of assets. As such, the tax impact takes into consideration the tax basis of the assets on the date of sale and the availability of net operating losses and research and development tax credits. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:6pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The effective tax rate as compared to the U.S. federal statutory rate of 21% differs primarily due to state income taxes and the benefits associated with stock-based compensation expense and research and development tax credits.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Set forth below is a reconciliation of the components that caused our provision for income taxes to differ from amounts computed by applying the United States federal statutory rate for the years ended December&#160;31, 2020, 2019, and 2018: &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:12pt;font-weight:400;line-height:120%"&gt;&#160;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:62.243%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.631%"/&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:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" 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;Year&#160;Ended&#160;December&#160;31,&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt; &lt;/span&gt;&lt;/div&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: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;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;2019&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;2018&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:10pt;font-weight:400;line-height:100%"&gt;U.S. federal statutory income tax rate&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;21&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;21&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;21&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;State and local income taxes, net of federal benefit&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:10pt;font-weight:400;line-height:100%"&gt;3&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(53)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(3)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Stock-based compensation expense&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:10pt;font-weight:400;line-height:100%"&gt;(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:10pt;font-weight:400;line-height:100%"&gt;(88)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(7)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Meals and entertainment&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;7&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;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="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:10pt;font-weight:400;line-height:100%"&gt;Change in valuation allowance&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(475)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(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="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:10pt;font-weight:400;line-height:100%"&gt;Other permanent differences&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:10pt;font-weight:400;line-height:100%"&gt;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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;Research and development tax credits&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:10pt;font-weight:400;line-height:100%"&gt;(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:10pt;font-weight:400;line-height:100%"&gt;(64)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(9)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Provision for (benefit from) income taxes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;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:10pt;font-weight:400;line-height:100%"&gt;20&#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;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;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 #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:10pt;font-weight:400;line-height:100%"&gt;(652)&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;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;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 #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:10pt;font-weight:400;line-height:100%"&gt;2&#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;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;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-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The provision for (benefit from) income tax consists of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:62.243%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.631%"/&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="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;Year&#160;Ended&#160;December&#160;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="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;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;2019&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;2018&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:10pt;font-weight:400;line-height:100%"&gt;Current&lt;/span&gt;&lt;/td&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;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;&#160;&#160;&#160;&#160;&#160;&#160;Federal&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;3,982&#160;&lt;/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:10pt;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:10pt;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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;State and local&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:10pt;font-weight:400;line-height:100%"&gt;5,444&#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:10pt;font-weight:400;line-height:100%"&gt;(15)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;339&#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:10pt;font-weight:400;line-height:100%"&gt;Total current&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;9,426&#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 #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:10pt;font-weight:400;line-height:100%"&gt;(15)&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:10pt;font-weight:400;line-height:100%"&gt;339&#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:10pt;font-weight:400;line-height:100%"&gt;Deferred&lt;/span&gt;&lt;/td&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;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;&#160;&#160;&#160;&#160;&#160;&#160;Federal&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:10pt;font-weight:400;line-height:100%"&gt;27,982&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(18,761)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;65&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;State and local&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:10pt;font-weight:400;line-height:100%"&gt;1,020&#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:10pt;font-weight:400;line-height:100%"&gt;(12,683)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;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;/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:10pt;font-weight:400;line-height:100%"&gt;Total deferred&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;29,002&#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 #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:10pt;font-weight:400;line-height:100%"&gt;(31,444)&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 #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:10pt;font-weight:400;line-height:100%"&gt;81&#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:10pt;font-weight:400;line-height:100%"&gt;Total income tax provision (benefit)&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 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;$&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:10pt;font-weight:400;line-height:100%"&gt;38,428&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(31,459)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;420&#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-align:justify"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The components of deferred tax assets (liabilities) were as follows (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:74.706%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.631%"/&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:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="9" 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;December&#160;31,&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt; &lt;/span&gt;&lt;/div&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: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;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;2019&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:10pt;font-weight:400;line-height:100%"&gt;Deferred income tax assets:&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;&#160;&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: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;/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:10pt;font-weight:400;line-height:100%"&gt;Net operating loss carryforwards&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,112&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;22,525&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Research and development tax credits&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:10pt;font-weight:400;line-height:100%"&gt;9,467&#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:10pt;font-weight:400;line-height:100%"&gt;17,700&#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;/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:10pt;font-weight:400;line-height:100%"&gt;Stock-based compensation&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:10pt;font-weight:400;line-height:100%"&gt;2,783&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;2,895&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Lease asset&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:10pt;font-weight:400;line-height:100%"&gt;9,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:10pt;font-weight:400;line-height:100%"&gt;8,291&#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:10pt;font-weight:400;line-height:100%"&gt;Other&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:10pt;font-weight:400;line-height:100%"&gt;2,196&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;1,692&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Total deferred tax assets&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;28,550&#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="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:10pt;font-weight:400;line-height:100%"&gt;53,103&#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;/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;/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:10pt;font-weight:400;line-height:100%"&gt;Deferred tax liabilities:&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;&#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;padding:2px 1pt;text-align:right;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;/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:10pt;font-weight:400;line-height:100%"&gt;Property, equipment and software&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:10pt;font-weight:400;line-height:100%"&gt;(13,412)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(7,965)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Intangible assets&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:10pt;font-weight:400;line-height:100%"&gt;(2,693)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(3,767)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Capitalized commissions&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:10pt;font-weight:400;line-height:100%"&gt;(2,708)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(2,492)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;State taxes&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:10pt;font-weight:400;line-height:100%"&gt;(2,350)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(2,563)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Lease liability&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:10pt;font-weight:400;line-height:100%"&gt;(8,064)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(7,152)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Other&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:10pt;font-weight:400;line-height:100%"&gt;(751)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(1,590)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Total deferred tax liabilities&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;(29,978)&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:10pt;font-weight:400;line-height:100%"&gt;(25,529)&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:10pt;font-weight:400;line-height:100%"&gt;Total net deferred tax (liabilities) assets&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 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;$&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:10pt;font-weight:400;line-height:100%"&gt;(1,428)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;27,574&#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-bottom:6pt;margin-top:12pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;At December&#160;31, 2020, we had no federal net operating loss carryforwards. At December&#160;31, 2020, we had state net operating loss carryforwards of $46.5&#160;million, which will begin to expire in 2028. At December&#160;31, 2020, we also had federal and state research and development credit carryforwards of $4.1&#160;million and $11.5&#160;million, respectively. The federal credit carryforwards will begin to expire in 2040, while the state credit carryforwards apply indefinitely. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Internal Revenue Code of 1986, as amended (&#x201c;IRC&#x201d;), imposes substantial restrictions on the utilization of tax attributes in the event of an &#x201c;ownership change&#x201d; of a corporation. Accordingly, a company&#x2019;s ability to use pre-change tax attributes may be limited as prescribed under IRC Section 382. Events which may cause limitation in the amount of the tax attributes that we utilize in any one year include, but are not limited to, a cumulative ownership change of more than 50% over a rolling three-year period. We have undertaken an IRC Section 382 analysis and have determined that there are no limitations on the tax attributes at December&#160;31, 2020. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&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, 2019 and 2018, we recorded an income tax benefit of $31.5 million and income tax expense of $0.4 million. During the second quarter of 2019, we evaluated all available positive and negative evidence, including our sustained profitability in 2018 and 2019, the impact of recent acquisitions and future projections of profitability. As a result, we determined that all of our deferred tax assets were more likely than not to be realized and reversed the valuation allowance against those deferred tax assets accordingly.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The change in the valuation allowance for the years ended December&#160;31, 2020, 2019 and 2018 was as follows (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:62.243%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.631%"/&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:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" 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;Year&#160;Ended&#160;December&#160;31,&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt; &lt;/span&gt;&lt;/div&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: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;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;2019&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;2018&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:10pt;font-weight:400;line-height:100%"&gt;Valuation allowance, at beginning of year&lt;/span&gt;&lt;/td&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:10pt;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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;23,002&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;23,827&#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:10pt;font-weight:400;line-height:100%"&gt;Decrease in valuation allowance&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(23,002)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(825)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Valuation allowance, at end of year&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 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;$&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:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;23,002&#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:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:1pt;font-weight:400;line-height:120%"&gt;&#160;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify;text-indent:36pt"&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 reconciliation of the total amounts of reserves for unrecognized tax benefits from uncertain tax positions (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:62.243%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.631%"/&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:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" 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;Year&#160;Ended&#160;December&#160;31,&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt; &lt;/span&gt;&lt;/div&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: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;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;2019&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;2018&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:10pt;font-weight:400;line-height:100%"&gt;Unrecognized tax benefit beginning of year&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,421&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;2,977&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;2,105&#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;/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:10pt;font-weight:400;line-height:100%"&gt;Increases-tax positions in current year&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:10pt;font-weight:400;line-height:100%"&gt;1,720&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;1,444&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;872&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Unrecognized tax benefit end of year&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 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;$&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:10pt;font-weight:400;line-height:100%"&gt;6,141&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,421&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;2,977&#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:6pt;margin-top:12pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The unrecognized tax benefits are recorded as a reduction to the deferred tax assets and liabilities.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;At December&#160;31, 2020 and 2019, we had no accrued interest and penalties related to uncertain income tax positions. We do not anticipate that the amount of unrecognized tax benefits will significantly increase or decrease within the next twelve months. &lt;/span&gt;&lt;/div&gt;We are subject to taxation in the United States and various states. Due to the net operating loss carryforwards, our federal and state returns are open to examination by the Internal Revenue Service and state jurisdictions for all years since inception. We are not currently under audit by any taxing authorities.</us-gaap:IncomeTaxDisclosureTextBlock>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90ZXh0cmVnaW9uOjNlNTU5ODA0ZGU1NzQ4NGNhMzhhYjgyNGFmMTVlNTA5Xzgz_080dc778-95d8-4c3d-bbcb-781c6c0c3dfb"
      unitRef="usd">38400000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:DiscontinuedOperationTaxEffectOfDiscontinuedOperation
      contextRef="i70c9259d55f74d20951c3ce8ee22b950_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90ZXh0cmVnaW9uOjNlNTU5ODA0ZGU1NzQ4NGNhMzhhYjgyNGFmMTVlNTA5XzY1OTcwNjk3ODM4NzM_0f6c0e68-631b-4aef-8824-17cc77aba800"
      unitRef="usd">51300000</us-gaap:DiscontinuedOperationTaxEffectOfDiscontinuedOperation>
    <us-gaap:DiscontinuedOperationTaxEffectOfIncomeLossFromDisposalOfDiscontinuedOperation
      contextRef="i70c9259d55f74d20951c3ce8ee22b950_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90ZXh0cmVnaW9uOjNlNTU5ODA0ZGU1NzQ4NGNhMzhhYjgyNGFmMTVlNTA5XzY1OTcwNjk3ODM5MDI_ff06588a-74db-48d5-80cc-31f71b1abad0"
      unitRef="usd">52300000</us-gaap:DiscontinuedOperationTaxEffectOfIncomeLossFromDisposalOfDiscontinuedOperation>
    <us-gaap:IncreaseDecreaseInDeferredIncomeTaxes
      contextRef="i70c9259d55f74d20951c3ce8ee22b950_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90ZXh0cmVnaW9uOjNlNTU5ODA0ZGU1NzQ4NGNhMzhhYjgyNGFmMTVlNTA5XzY1OTcwNjk3ODM4ODg_62942387-9c1b-4966-898e-fceec29ada59"
      unitRef="usd">1000000.0</us-gaap:IncreaseDecreaseInDeferredIncomeTaxes>
    <us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90ZXh0cmVnaW9uOjNlNTU5ODA0ZGU1NzQ4NGNhMzhhYjgyNGFmMTVlNTA5XzM0NjI_08937dc9-b1b9-4ddc-bb63-810e62b03431">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Set forth below is a reconciliation of the components that caused our provision for income taxes to differ from amounts computed by applying the United States federal statutory rate for the years ended December&#160;31, 2020, 2019, and 2018: &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:12pt;font-weight:400;line-height:120%"&gt;&#160;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:62.243%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.631%"/&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:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" 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;Year&#160;Ended&#160;December&#160;31,&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt; &lt;/span&gt;&lt;/div&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: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;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;2019&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;2018&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:10pt;font-weight:400;line-height:100%"&gt;U.S. federal statutory income tax rate&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;21&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;21&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;21&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;State and local income taxes, net of federal benefit&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:10pt;font-weight:400;line-height:100%"&gt;3&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(53)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(3)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Stock-based compensation expense&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:10pt;font-weight:400;line-height:100%"&gt;(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:10pt;font-weight:400;line-height:100%"&gt;(88)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(7)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Meals and entertainment&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;7&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;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="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:10pt;font-weight:400;line-height:100%"&gt;Change in valuation allowance&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(475)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(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="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:10pt;font-weight:400;line-height:100%"&gt;Other permanent differences&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:10pt;font-weight:400;line-height:100%"&gt;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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;Research and development tax credits&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:10pt;font-weight:400;line-height:100%"&gt;(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:10pt;font-weight:400;line-height:100%"&gt;(64)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(9)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Provision for (benefit from) income taxes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;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:10pt;font-weight:400;line-height:100%"&gt;20&#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;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;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 #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:10pt;font-weight:400;line-height:100%"&gt;(652)&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;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;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 #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:10pt;font-weight:400;line-height:100%"&gt;2&#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;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;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="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzItMS0xLTEtMA_c5bf471a-a7c0-455a-b31f-d042c7607442"
      unitRef="number">0.21</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzItMy0xLTEtMA_57dce016-a6ee-4b96-8c98-1bc475b856e5"
      unitRef="number">0.21</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzItNS0xLTEtMA_b49e6f0d-5b35-4bf1-9db9-4d016056a75d"
      unitRef="number">0.21</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzMtMS0xLTEtMA_85875ac6-fe62-4aec-8b06-70e293534d2a"
      unitRef="number">0.03</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzMtMy0xLTEtMA_edea3a3e-43bb-4674-81b4-90680616a7b7"
      unitRef="number">-0.53</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzMtNS0xLTEtMA_549646f0-1154-46f6-9357-3c86a44b2290"
      unitRef="number">-0.03</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzQtMS0xLTEtMA_f54760d7-ff9f-4f39-8a40-4e91c3a9bbac"
      unitRef="number">0.03</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzQtMy0xLTEtMA_d4a32430-6111-459f-8231-bb696baf978e"
      unitRef="number">0.88</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzQtNS0xLTEtMA_bde1c01e-c2a8-4eb9-ae17-a39f3ef39a75"
      unitRef="number">0.07</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseMealsAndEntertainment
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzUtMS0xLTEtMA_ed130793-baf1-4915-ad18-938d46927383"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseMealsAndEntertainment>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseMealsAndEntertainment
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzUtMy0xLTEtMA_d490b279-4ab5-4af9-9744-4fbca00a982a"
      unitRef="number">0.07</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseMealsAndEntertainment>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseMealsAndEntertainment
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzUtNS0xLTEtMA_fb2a0631-c803-4719-90f1-5772e30078c2"
      unitRef="number">0.01</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseMealsAndEntertainment>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzctMS0xLTEtMA_5f770e4e-e158-47b9-a09d-0ac072f07127"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzctMy0xLTEtMA_6396dc1e-d2a2-4ce9-92b7-1557649f0519"
      unitRef="number">-4.75</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzctNS0xLTEtMA_b262b8d0-bfbd-4010-b01d-24187fbdaa11"
      unitRef="number">-0.01</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzktMS0xLTEtNDMwMg_feb7771c-8f90-4db3-9e5b-9278d48fecff"
      unitRef="number">0.01</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzktMy0xLTEtNDMwMg_78ac5955-54e9-4bec-b864-f023369074c8"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzktNS0xLTEtNDMwMg_bb3a2d06-7d1f-4d57-be43-86c1b60641a2"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzktMS0xLTEtMA_c85ca1fa-1100-4ee0-a4a8-95625542b748"
      unitRef="number">0.02</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzktMy0xLTEtMA_7042eb68-023e-42f9-9fc6-df767f29a0ea"
      unitRef="number">0.64</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzktNS0xLTEtMA_d9b098aa-f910-48f1-8b6a-bfb27513467a"
      unitRef="number">0.09</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzEwLTEtMS0xLTA_ab62fd10-39f4-44b5-ae13-6e2a039306ba"
      unitRef="number">0.20</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzEwLTMtMS0xLTA_7d9831a5-5e9e-4b7c-ad65-b263f412a84b"
      unitRef="number">-6.52</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpiMDBlZGE3NjE5OWI0N2JjYTNhNjg0NTI0ODZmNWI5OC90YWJsZXJhbmdlOmIwMGVkYTc2MTk5YjQ3YmNhM2E2ODQ1MjQ4NmY1Yjk4XzEwLTUtMS0xLTA_605dbe50-f228-4290-a54e-1f7f5cbe1aa3"
      unitRef="number">0.02</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90ZXh0cmVnaW9uOjNlNTU5ODA0ZGU1NzQ4NGNhMzhhYjgyNGFmMTVlNTA5XzM0NjM_da788b17-1f08-48ec-85db-51b74a62edf1">&lt;div style="text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The provision for (benefit from) income tax consists of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:62.243%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.631%"/&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="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;Year&#160;Ended&#160;December&#160;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="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;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;2019&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;2018&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:10pt;font-weight:400;line-height:100%"&gt;Current&lt;/span&gt;&lt;/td&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;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;&#160;&#160;&#160;&#160;&#160;&#160;Federal&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;3,982&#160;&lt;/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:10pt;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:10pt;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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;State and local&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:10pt;font-weight:400;line-height:100%"&gt;5,444&#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:10pt;font-weight:400;line-height:100%"&gt;(15)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;339&#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:10pt;font-weight:400;line-height:100%"&gt;Total current&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;9,426&#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 #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:10pt;font-weight:400;line-height:100%"&gt;(15)&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:10pt;font-weight:400;line-height:100%"&gt;339&#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:10pt;font-weight:400;line-height:100%"&gt;Deferred&lt;/span&gt;&lt;/td&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;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;&#160;&#160;&#160;&#160;&#160;&#160;Federal&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:10pt;font-weight:400;line-height:100%"&gt;27,982&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(18,761)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;65&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;State and local&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:10pt;font-weight:400;line-height:100%"&gt;1,020&#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:10pt;font-weight:400;line-height:100%"&gt;(12,683)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;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;/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:10pt;font-weight:400;line-height:100%"&gt;Total deferred&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;29,002&#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 #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:10pt;font-weight:400;line-height:100%"&gt;(31,444)&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 #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:10pt;font-weight:400;line-height:100%"&gt;81&#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:10pt;font-weight:400;line-height:100%"&gt;Total income tax provision (benefit)&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 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;$&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:10pt;font-weight:400;line-height:100%"&gt;38,428&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(31,459)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;420&#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="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTo3MWFjNzRiM2M2MmE0YmUxOGY3Yzc1MWYxYjdiNDY5OC90YWJsZXJhbmdlOjcxYWM3NGIzYzYyYTRiZTE4ZjdjNzUxZjFiN2I0Njk4XzMtMS0xLTEtMA_005eba68-5d95-4432-8ced-70af1ed182d6"
      unitRef="usd">3982000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTo3MWFjNzRiM2M2MmE0YmUxOGY3Yzc1MWYxYjdiNDY5OC90YWJsZXJhbmdlOjcxYWM3NGIzYzYyYTRiZTE4ZjdjNzUxZjFiN2I0Njk4XzMtMy0xLTEtMA_6e10ba0f-fc84-4724-bb02-f8c0f856ac08"
      unitRef="usd">0</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTo3MWFjNzRiM2M2MmE0YmUxOGY3Yzc1MWYxYjdiNDY5OC90YWJsZXJhbmdlOjcxYWM3NGIzYzYyYTRiZTE4ZjdjNzUxZjFiN2I0Njk4XzMtNS0xLTEtMA_c6ec8ebc-bed9-4452-8c70-b41dffc5325d"
      unitRef="usd">0</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTo3MWFjNzRiM2M2MmE0YmUxOGY3Yzc1MWYxYjdiNDY5OC90YWJsZXJhbmdlOjcxYWM3NGIzYzYyYTRiZTE4ZjdjNzUxZjFiN2I0Njk4XzQtMS0xLTEtMA_3dd4d105-5e48-4a12-ae50-e71ccc260a0d"
      unitRef="usd">5444000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTo3MWFjNzRiM2M2MmE0YmUxOGY3Yzc1MWYxYjdiNDY5OC90YWJsZXJhbmdlOjcxYWM3NGIzYzYyYTRiZTE4ZjdjNzUxZjFiN2I0Njk4XzQtMy0xLTEtMA_a99f838d-8d8b-47cf-91fd-a95d75b7599a"
      unitRef="usd">-15000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTo3MWFjNzRiM2M2MmE0YmUxOGY3Yzc1MWYxYjdiNDY5OC90YWJsZXJhbmdlOjcxYWM3NGIzYzYyYTRiZTE4ZjdjNzUxZjFiN2I0Njk4XzQtNS0xLTEtMA_6dd369a1-a32b-4a79-b3ae-ee59f5c8fd29"
      unitRef="usd">339000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTo3MWFjNzRiM2M2MmE0YmUxOGY3Yzc1MWYxYjdiNDY5OC90YWJsZXJhbmdlOjcxYWM3NGIzYzYyYTRiZTE4ZjdjNzUxZjFiN2I0Njk4XzUtMS0xLTEtMA_f1ea0e54-e459-4298-857f-4c26122fe519"
      unitRef="usd">9426000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTo3MWFjNzRiM2M2MmE0YmUxOGY3Yzc1MWYxYjdiNDY5OC90YWJsZXJhbmdlOjcxYWM3NGIzYzYyYTRiZTE4ZjdjNzUxZjFiN2I0Njk4XzUtMy0xLTEtMA_3a36220b-7a9c-42be-aaba-911f717df1ca"
      unitRef="usd">-15000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTo3MWFjNzRiM2M2MmE0YmUxOGY3Yzc1MWYxYjdiNDY5OC90YWJsZXJhbmdlOjcxYWM3NGIzYzYyYTRiZTE4ZjdjNzUxZjFiN2I0Njk4XzUtNS0xLTEtMA_eee42fab-cd5c-40f9-a7eb-fc6c773be145"
      unitRef="usd">339000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTo3MWFjNzRiM2M2MmE0YmUxOGY3Yzc1MWYxYjdiNDY5OC90YWJsZXJhbmdlOjcxYWM3NGIzYzYyYTRiZTE4ZjdjNzUxZjFiN2I0Njk4XzctMS0xLTEtMA_314cc217-fc2b-4d81-9315-28b1369c6d05"
      unitRef="usd">27982000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTo3MWFjNzRiM2M2MmE0YmUxOGY3Yzc1MWYxYjdiNDY5OC90YWJsZXJhbmdlOjcxYWM3NGIzYzYyYTRiZTE4ZjdjNzUxZjFiN2I0Njk4XzctMy0xLTEtMA_5d703acd-6579-4556-b970-71a5e24a23ba"
      unitRef="usd">-18761000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTo3MWFjNzRiM2M2MmE0YmUxOGY3Yzc1MWYxYjdiNDY5OC90YWJsZXJhbmdlOjcxYWM3NGIzYzYyYTRiZTE4ZjdjNzUxZjFiN2I0Njk4XzctNS0xLTEtMA_85f9a83e-c413-4b83-b936-9705a1a865ae"
      unitRef="usd">65000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTo3MWFjNzRiM2M2MmE0YmUxOGY3Yzc1MWYxYjdiNDY5OC90YWJsZXJhbmdlOjcxYWM3NGIzYzYyYTRiZTE4ZjdjNzUxZjFiN2I0Njk4XzgtMS0xLTEtMA_dcb40606-de7e-47ef-aa15-75ad43adae77"
      unitRef="usd">1020000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTo3MWFjNzRiM2M2MmE0YmUxOGY3Yzc1MWYxYjdiNDY5OC90YWJsZXJhbmdlOjcxYWM3NGIzYzYyYTRiZTE4ZjdjNzUxZjFiN2I0Njk4XzgtMy0xLTEtMA_82102891-37ed-453f-9695-500f101482c1"
      unitRef="usd">-12683000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTo3MWFjNzRiM2M2MmE0YmUxOGY3Yzc1MWYxYjdiNDY5OC90YWJsZXJhbmdlOjcxYWM3NGIzYzYyYTRiZTE4ZjdjNzUxZjFiN2I0Njk4XzgtNS0xLTEtMA_b530f4f8-bd09-4dc9-98a6-f6e6778b8965"
      unitRef="usd">16000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTo3MWFjNzRiM2M2MmE0YmUxOGY3Yzc1MWYxYjdiNDY5OC90YWJsZXJhbmdlOjcxYWM3NGIzYzYyYTRiZTE4ZjdjNzUxZjFiN2I0Njk4XzktMS0xLTEtMA_34f9253c-14e6-4fa5-9009-1d6fbb108a97"
      unitRef="usd">29002000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTo3MWFjNzRiM2M2MmE0YmUxOGY3Yzc1MWYxYjdiNDY5OC90YWJsZXJhbmdlOjcxYWM3NGIzYzYyYTRiZTE4ZjdjNzUxZjFiN2I0Njk4XzktMy0xLTEtMA_8d7b6680-8ac9-499c-b94b-0c65489cdb6f"
      unitRef="usd">-31444000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTo3MWFjNzRiM2M2MmE0YmUxOGY3Yzc1MWYxYjdiNDY5OC90YWJsZXJhbmdlOjcxYWM3NGIzYzYyYTRiZTE4ZjdjNzUxZjFiN2I0Njk4XzktNS0xLTEtMA_289309a5-c427-476a-b6d5-6c8bf44fec5c"
      unitRef="usd">81000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTo3MWFjNzRiM2M2MmE0YmUxOGY3Yzc1MWYxYjdiNDY5OC90YWJsZXJhbmdlOjcxYWM3NGIzYzYyYTRiZTE4ZjdjNzUxZjFiN2I0Njk4XzEwLTEtMS0xLTA_1d6eb9ba-5ef8-4a1e-ae28-c997d14364e4"
      unitRef="usd">38428000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTo3MWFjNzRiM2M2MmE0YmUxOGY3Yzc1MWYxYjdiNDY5OC90YWJsZXJhbmdlOjcxYWM3NGIzYzYyYTRiZTE4ZjdjNzUxZjFiN2I0Njk4XzEwLTMtMS0xLTA_02cdcb6c-cb7f-4bcb-a149-1b21df4473a3"
      unitRef="usd">-31459000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTo3MWFjNzRiM2M2MmE0YmUxOGY3Yzc1MWYxYjdiNDY5OC90YWJsZXJhbmdlOjcxYWM3NGIzYzYyYTRiZTE4ZjdjNzUxZjFiN2I0Njk4XzEwLTUtMS0xLTA_28197fd9-e78f-4942-9c39-124037ab8528"
      unitRef="usd">420000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90ZXh0cmVnaW9uOjNlNTU5ODA0ZGU1NzQ4NGNhMzhhYjgyNGFmMTVlNTA5XzM0NjQ_5d85758f-4733-4944-82c9-1ed2943ebfb3">&lt;div style="text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The components of deferred tax assets (liabilities) were as follows (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:74.706%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.631%"/&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:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="9" 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;December&#160;31,&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt; &lt;/span&gt;&lt;/div&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: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;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;2019&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:10pt;font-weight:400;line-height:100%"&gt;Deferred income tax assets:&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;&#160;&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: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;/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:10pt;font-weight:400;line-height:100%"&gt;Net operating loss carryforwards&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,112&#160;&lt;/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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;22,525&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Research and development tax credits&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:10pt;font-weight:400;line-height:100%"&gt;9,467&#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:10pt;font-weight:400;line-height:100%"&gt;17,700&#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;/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:10pt;font-weight:400;line-height:100%"&gt;Stock-based compensation&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:10pt;font-weight:400;line-height:100%"&gt;2,783&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;2,895&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Lease asset&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:10pt;font-weight:400;line-height:100%"&gt;9,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:10pt;font-weight:400;line-height:100%"&gt;8,291&#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:10pt;font-weight:400;line-height:100%"&gt;Other&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:10pt;font-weight:400;line-height:100%"&gt;2,196&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;1,692&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Total deferred tax assets&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;28,550&#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="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:10pt;font-weight:400;line-height:100%"&gt;53,103&#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;/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;/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:10pt;font-weight:400;line-height:100%"&gt;Deferred tax liabilities:&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;&#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;padding:2px 1pt;text-align:right;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;/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:10pt;font-weight:400;line-height:100%"&gt;Property, equipment and software&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:10pt;font-weight:400;line-height:100%"&gt;(13,412)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(7,965)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Intangible assets&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:10pt;font-weight:400;line-height:100%"&gt;(2,693)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(3,767)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Capitalized commissions&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:10pt;font-weight:400;line-height:100%"&gt;(2,708)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(2,492)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;State taxes&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:10pt;font-weight:400;line-height:100%"&gt;(2,350)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(2,563)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Lease liability&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:10pt;font-weight:400;line-height:100%"&gt;(8,064)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(7,152)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Other&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:10pt;font-weight:400;line-height:100%"&gt;(751)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(1,590)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Total deferred tax liabilities&lt;/span&gt;&lt;/td&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:10pt;font-weight:400;line-height:100%"&gt;(29,978)&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:10pt;font-weight:400;line-height:100%"&gt;(25,529)&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:10pt;font-weight:400;line-height:100%"&gt;Total net deferred tax (liabilities) assets&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 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;$&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:10pt;font-weight:400;line-height:100%"&gt;(1,428)&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;27,574&#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:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwards
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzMtMS0xLTEtMA_57df6477-832e-4ea4-9c97-a028d6338a90"
      unitRef="usd">4112000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwards>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwards
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzMtMy0xLTEtMA_3f10ee7f-4e44-4a13-93ae-55a1e6fd4135"
      unitRef="usd">22525000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwards>
    <us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzQtMS0xLTEtMA_42bd2619-d4f3-4605-905d-9a361ca4be60"
      unitRef="usd">9467000</us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch>
    <us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzQtMy0xLTEtMA_523a2029-a573-4f0f-9b28-6feaeb4dbf56"
      unitRef="usd">17700000</us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzYtMS0xLTEtMA_21028499-f4eb-42dd-8971-a3deba7010e8"
      unitRef="usd">2783000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzYtMy0xLTEtMA_ba9db0ac-1bea-4c13-98d3-782c61f760d0"
      unitRef="usd">2895000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost>
    <appf:DeferredTaxAssetsLeasingArrangements
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzctMS0xLTEtMA_357e699e-30e8-4a6d-803b-d8fb9c61ec30"
      unitRef="usd">9992000</appf:DeferredTaxAssetsLeasingArrangements>
    <appf:DeferredTaxAssetsLeasingArrangements
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzctMy0xLTEtMA_d72ca4f0-1c40-4daf-8f6a-383d2360f6e3"
      unitRef="usd">8291000</appf:DeferredTaxAssetsLeasingArrangements>
    <us-gaap:DeferredTaxAssetsOther
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzgtMS0xLTEtMA_ca8b5a3e-7110-4fb0-947d-42634ccd4701"
      unitRef="usd">2196000</us-gaap:DeferredTaxAssetsOther>
    <us-gaap:DeferredTaxAssetsOther
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzgtMy0xLTEtMA_d6399f88-f841-4b45-99d1-0c6acdca3ed8"
      unitRef="usd">1692000</us-gaap:DeferredTaxAssetsOther>
    <us-gaap:DeferredTaxAssetsGross
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzktMS0xLTEtMA_cff9bd84-e39e-470e-815c-40b840246241"
      unitRef="usd">28550000</us-gaap:DeferredTaxAssetsGross>
    <us-gaap:DeferredTaxAssetsGross
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzktMy0xLTEtMA_945da62d-e3c3-4c66-ba54-509f5cf13c11"
      unitRef="usd">53103000</us-gaap:DeferredTaxAssetsGross>
    <us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzEzLTEtMS0xLTA_d5a252af-c631-4825-8bf8-196a90ffe6b3"
      unitRef="usd">13412000</us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment>
    <us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzEzLTMtMS0xLTA_4b70e748-916f-45c1-9212-435128ef0cac"
      unitRef="usd">7965000</us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment>
    <us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzE0LTEtMS0xLTA_3acd0fc4-ec85-4b8c-8578-5b8a755900e9"
      unitRef="usd">2693000</us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets>
    <us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzE0LTMtMS0xLTA_a2866ab8-d433-4d4e-9b20-1e324bd0c0f5"
      unitRef="usd">3767000</us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets>
    <appf:DeferredTaxLiabilitiesCapitalizedCommissions
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzE1LTEtMS0xLTA_18c6e76a-4109-49a0-b14a-4ead25570cbc"
      unitRef="usd">2708000</appf:DeferredTaxLiabilitiesCapitalizedCommissions>
    <appf:DeferredTaxLiabilitiesCapitalizedCommissions
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzE1LTMtMS0xLTA_9dec934b-f4b2-46dc-bfc0-7deff9e28a0e"
      unitRef="usd">2492000</appf:DeferredTaxLiabilitiesCapitalizedCommissions>
    <appf:DeferredTaxLiabilitiesStateTaxes
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzE2LTEtMS0xLTA_f771b076-3934-4bd3-bc7b-884fbbe4de8b"
      unitRef="usd">2350000</appf:DeferredTaxLiabilitiesStateTaxes>
    <appf:DeferredTaxLiabilitiesStateTaxes
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzE2LTMtMS0xLTA_072756a7-bfd9-45d3-acbe-a1305e30a8ef"
      unitRef="usd">2563000</appf:DeferredTaxLiabilitiesStateTaxes>
    <us-gaap:DeferredTaxLiabilitiesLeasingArrangements
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzE3LTEtMS0xLTA_db1804e4-86ea-4b87-9fdb-9d644299fbd2"
      unitRef="usd">8064000</us-gaap:DeferredTaxLiabilitiesLeasingArrangements>
    <us-gaap:DeferredTaxLiabilitiesLeasingArrangements
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzE3LTMtMS0xLTA_b697cefc-1eb0-42fc-a80e-7a96aa4632f0"
      unitRef="usd">7152000</us-gaap:DeferredTaxLiabilitiesLeasingArrangements>
    <us-gaap:DeferredTaxLiabilitiesOther
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzE4LTEtMS0xLTA_23b7dfb3-7ae1-4f89-a402-862cc0653acf"
      unitRef="usd">751000</us-gaap:DeferredTaxLiabilitiesOther>
    <us-gaap:DeferredTaxLiabilitiesOther
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzE4LTMtMS0xLTA_7d786d69-684f-4351-9a8c-0621ac955807"
      unitRef="usd">1590000</us-gaap:DeferredTaxLiabilitiesOther>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzE5LTEtMS0xLTA_9ef976dc-cf04-45fc-b2c5-4b01653fbe44"
      unitRef="usd">29978000</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzE5LTMtMS0xLTA_38f55f98-d7dd-4ec8-84b5-801f36a092ab"
      unitRef="usd">25529000</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:DeferredTaxLiabilities
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzIwLTEtMS0xLTA_e8f581b9-b3a4-487a-b1a2-c50aec0d237c"
      unitRef="usd">1428000</us-gaap:DeferredTaxLiabilities>
    <us-gaap:DeferredTaxAssetsLiabilitiesNet
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTowNTM0MTU2YzUyYzc0NTJiYjgyNTk2MDBjMmJmZjcxZi90YWJsZXJhbmdlOjA1MzQxNTZjNTJjNzQ1MmJiODI1OTYwMGMyYmZmNzFmXzIwLTMtMS0xLTA_88d25712-341e-42f0-9194-50afee8f95b8"
      unitRef="usd">27574000</us-gaap:DeferredTaxAssetsLiabilitiesNet>
    <us-gaap:OperatingLossCarryforwards
      contextRef="if0c6336a8b284bd7b3c58ea15b32829c_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90ZXh0cmVnaW9uOjNlNTU5ODA0ZGU1NzQ4NGNhMzhhYjgyNGFmMTVlNTA5XzY1OTcwNjk3ODM5MTc_19c62736-4b19-4720-84e1-3faea4c5f0a7"
      unitRef="usd">0</us-gaap:OperatingLossCarryforwards>
    <us-gaap:OperatingLossCarryforwards
      contextRef="ifbb35241961348a7906632a948d86917_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90ZXh0cmVnaW9uOjNlNTU5ODA0ZGU1NzQ4NGNhMzhhYjgyNGFmMTVlNTA5XzI3NDg3NzkwODIzNjk_95b496c2-2a82-4b41-92d7-45364c05885c"
      unitRef="usd">46500000</us-gaap:OperatingLossCarryforwards>
    <us-gaap:TaxCreditCarryforwardAmount
      contextRef="i01390a6a12cd445db158cda4169a39a6_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90ZXh0cmVnaW9uOjNlNTU5ODA0ZGU1NzQ4NGNhMzhhYjgyNGFmMTVlNTA5XzI3NDg3NzkwODI1NzI_456b6eb6-f348-4a7f-b24f-89810f38b624"
      unitRef="usd">4100000</us-gaap:TaxCreditCarryforwardAmount>
    <us-gaap:TaxCreditCarryforwardAmount
      contextRef="ifbb35241961348a7906632a948d86917_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90ZXh0cmVnaW9uOjNlNTU5ODA0ZGU1NzQ4NGNhMzhhYjgyNGFmMTVlNTA5XzI3NDg3NzkwODI1ODY_9a19fe68-4a59-46ff-8898-75beda34add7"
      unitRef="usd">11500000</us-gaap:TaxCreditCarryforwardAmount>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90ZXh0cmVnaW9uOjNlNTU5ODA0ZGU1NzQ4NGNhMzhhYjgyNGFmMTVlNTA5XzEwOTk1MTE2NDUxNTU_f735a9fe-96c3-44b2-bc3e-2a2f3831f259"
      unitRef="usd">-31500000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90ZXh0cmVnaW9uOjNlNTU5ODA0ZGU1NzQ4NGNhMzhhYjgyNGFmMTVlNTA5XzEwOTk1MTE2NDUxNjI_bb0922bd-e960-4039-b37c-4b735e9e8ac8"
      unitRef="usd">400000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:SummaryOfValuationAllowanceTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90ZXh0cmVnaW9uOjNlNTU5ODA0ZGU1NzQ4NGNhMzhhYjgyNGFmMTVlNTA5XzM0NTE_9add5062-8687-4d7e-9191-d2c9b75c9cc1">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The change in the valuation allowance for the years ended December&#160;31, 2020, 2019 and 2018 was as follows (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:62.243%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.631%"/&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:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" 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;Year&#160;Ended&#160;December&#160;31,&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt; &lt;/span&gt;&lt;/div&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: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;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;2019&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;2018&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:10pt;font-weight:400;line-height:100%"&gt;Valuation allowance, at beginning of year&lt;/span&gt;&lt;/td&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:10pt;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:10pt;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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;23,002&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;23,827&#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:10pt;font-weight:400;line-height:100%"&gt;Decrease in valuation allowance&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;(23,002)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;(825)&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Valuation allowance, at end of year&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 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;$&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:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;23,002&#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:SummaryOfValuationAllowanceTextBlock>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpjNDM3NTQ2ZjA0Y2Y0MDhlOWViMWJlZWZmMGE4NWUwNi90YWJsZXJhbmdlOmM0Mzc1NDZmMDRjZjQwOGU5ZWIxYmVlZmYwYTg1ZTA2XzItMS0xLTEtMA_8f401986-51ea-42fd-b400-1eed6bff923e"
      unitRef="usd">0</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i02d63145a04b47a48a5a20bb6671ce00_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpjNDM3NTQ2ZjA0Y2Y0MDhlOWViMWJlZWZmMGE4NWUwNi90YWJsZXJhbmdlOmM0Mzc1NDZmMDRjZjQwOGU5ZWIxYmVlZmYwYTg1ZTA2XzItMy0xLTEtMA_6b72b113-1a52-4d23-9c9c-448d86f7a962"
      unitRef="usd">23002000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i33fd34f1e8d1430f80df86809474ca2c_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpjNDM3NTQ2ZjA0Y2Y0MDhlOWViMWJlZWZmMGE4NWUwNi90YWJsZXJhbmdlOmM0Mzc1NDZmMDRjZjQwOGU5ZWIxYmVlZmYwYTg1ZTA2XzItNS0xLTEtMA_6a050a07-8858-46bf-88cc-50da7558530a"
      unitRef="usd">23827000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpjNDM3NTQ2ZjA0Y2Y0MDhlOWViMWJlZWZmMGE4NWUwNi90YWJsZXJhbmdlOmM0Mzc1NDZmMDRjZjQwOGU5ZWIxYmVlZmYwYTg1ZTA2XzMtMS0xLTEtMA_7a12fce8-4a06-43b2-9dc4-cb97488298b8"
      unitRef="usd">0</us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount>
    <us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpjNDM3NTQ2ZjA0Y2Y0MDhlOWViMWJlZWZmMGE4NWUwNi90YWJsZXJhbmdlOmM0Mzc1NDZmMDRjZjQwOGU5ZWIxYmVlZmYwYTg1ZTA2XzMtMy0xLTEtMA_5652a666-4874-4d32-a601-e2ef1cdc3b5f"
      unitRef="usd">-23002000</us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount>
    <us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpjNDM3NTQ2ZjA0Y2Y0MDhlOWViMWJlZWZmMGE4NWUwNi90YWJsZXJhbmdlOmM0Mzc1NDZmMDRjZjQwOGU5ZWIxYmVlZmYwYTg1ZTA2XzMtNS0xLTEtMA_9329bc6d-8026-4050-93f8-ff9bb15b9e3f"
      unitRef="usd">-825000</us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpjNDM3NTQ2ZjA0Y2Y0MDhlOWViMWJlZWZmMGE4NWUwNi90YWJsZXJhbmdlOmM0Mzc1NDZmMDRjZjQwOGU5ZWIxYmVlZmYwYTg1ZTA2XzQtMS0xLTEtMA_020641c2-bb4a-4dc1-8252-1bd71d65df22"
      unitRef="usd">0</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpjNDM3NTQ2ZjA0Y2Y0MDhlOWViMWJlZWZmMGE4NWUwNi90YWJsZXJhbmdlOmM0Mzc1NDZmMDRjZjQwOGU5ZWIxYmVlZmYwYTg1ZTA2XzQtMy0xLTEtMA_2c55539e-d550-4b4f-adfa-6626ee9517e9"
      unitRef="usd">0</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i02d63145a04b47a48a5a20bb6671ce00_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTpjNDM3NTQ2ZjA0Y2Y0MDhlOWViMWJlZWZmMGE4NWUwNi90YWJsZXJhbmdlOmM0Mzc1NDZmMDRjZjQwOGU5ZWIxYmVlZmYwYTg1ZTA2XzQtNS0xLTEtMA_a616a747-9dd7-4004-85ec-65f1fd127f2b"
      unitRef="usd">23002000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90ZXh0cmVnaW9uOjNlNTU5ODA0ZGU1NzQ4NGNhMzhhYjgyNGFmMTVlNTA5XzM0NTI_f8d57355-bd3a-4d48-bddd-f1df12cc20d3">&lt;div style="text-align:justify;text-indent:36pt"&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 reconciliation of the total amounts of reserves for unrecognized tax benefits from uncertain tax positions (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:62.243%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.631%"/&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:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" 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;Year&#160;Ended&#160;December&#160;31,&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt; &lt;/span&gt;&lt;/div&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: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;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;2019&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;2018&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:10pt;font-weight:400;line-height:100%"&gt;Unrecognized tax benefit beginning of year&lt;/span&gt;&lt;/td&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,421&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;2,977&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;2,105&#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;/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:10pt;font-weight:400;line-height:100%"&gt;Increases-tax positions in current year&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:10pt;font-weight:400;line-height:100%"&gt;1,720&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;1,444&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;872&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;Unrecognized tax benefit end of year&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 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;$&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:10pt;font-weight:400;line-height:100%"&gt;6,141&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;4,421&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;2,977&#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:ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTozZDgwZWE3Nzk4MmY0YjZhYWQxNzNlZTgxYzNkNzRiYS90YWJsZXJhbmdlOjNkODBlYTc3OTgyZjRiNmFhZDE3M2VlODFjM2Q3NGJhXzItMS0xLTEtMA_07963418-18c5-46a1-8158-45b903fa09d6"
      unitRef="usd">4421000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i02d63145a04b47a48a5a20bb6671ce00_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTozZDgwZWE3Nzk4MmY0YjZhYWQxNzNlZTgxYzNkNzRiYS90YWJsZXJhbmdlOjNkODBlYTc3OTgyZjRiNmFhZDE3M2VlODFjM2Q3NGJhXzItMy0xLTEtMA_652b6e76-abbb-45cc-909e-450d7fd88fcf"
      unitRef="usd">2977000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i33fd34f1e8d1430f80df86809474ca2c_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTozZDgwZWE3Nzk4MmY0YjZhYWQxNzNlZTgxYzNkNzRiYS90YWJsZXJhbmdlOjNkODBlYTc3OTgyZjRiNmFhZDE3M2VlODFjM2Q3NGJhXzItNS0xLTEtMA_b92a10b4-bdb5-4647-b8a8-946a55437bb7"
      unitRef="usd">2105000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTozZDgwZWE3Nzk4MmY0YjZhYWQxNzNlZTgxYzNkNzRiYS90YWJsZXJhbmdlOjNkODBlYTc3OTgyZjRiNmFhZDE3M2VlODFjM2Q3NGJhXzQtMS0xLTEtMA_748ba40c-12b4-4b9e-86a0-40a3c01d9eb3"
      unitRef="usd">1720000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTozZDgwZWE3Nzk4MmY0YjZhYWQxNzNlZTgxYzNkNzRiYS90YWJsZXJhbmdlOjNkODBlYTc3OTgyZjRiNmFhZDE3M2VlODFjM2Q3NGJhXzQtMy0xLTEtMA_bfcd0b12-7710-4296-8a0a-eab884009860"
      unitRef="usd">1444000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTozZDgwZWE3Nzk4MmY0YjZhYWQxNzNlZTgxYzNkNzRiYS90YWJsZXJhbmdlOjNkODBlYTc3OTgyZjRiNmFhZDE3M2VlODFjM2Q3NGJhXzQtNS0xLTEtMA_f1f52bce-07e0-4521-a8ff-cfc27a3f8dcd"
      unitRef="usd">872000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTozZDgwZWE3Nzk4MmY0YjZhYWQxNzNlZTgxYzNkNzRiYS90YWJsZXJhbmdlOjNkODBlYTc3OTgyZjRiNmFhZDE3M2VlODFjM2Q3NGJhXzUtMS0xLTEtMA_4839404b-3f6e-41ac-b53d-8b419579ec87"
      unitRef="usd">6141000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTozZDgwZWE3Nzk4MmY0YjZhYWQxNzNlZTgxYzNkNzRiYS90YWJsZXJhbmdlOjNkODBlYTc3OTgyZjRiNmFhZDE3M2VlODFjM2Q3NGJhXzUtMy0xLTEtMA_53de516a-b3b8-4588-ad6d-a43449e1ffb3"
      unitRef="usd">4421000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i02d63145a04b47a48a5a20bb6671ce00_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90YWJsZTozZDgwZWE3Nzk4MmY0YjZhYWQxNzNlZTgxYzNkNzRiYS90YWJsZXJhbmdlOjNkODBlYTc3OTgyZjRiNmFhZDE3M2VlODFjM2Q3NGJhXzUtNS0xLTEtMA_f7d019d4-ab69-4f24-8d5b-2c57c1c85094"
      unitRef="usd">2977000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:IncomeTaxExaminationPenaltiesAndInterestAccrued
      contextRef="if87112ed58d44be294bd33c5ebbf224d_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90ZXh0cmVnaW9uOjNlNTU5ODA0ZGU1NzQ4NGNhMzhhYjgyNGFmMTVlNTA5XzI5MTA_44217ec6-d389-4daf-a0b5-e3dfcfabfb79"
      unitRef="usd">0</us-gaap:IncomeTaxExaminationPenaltiesAndInterestAccrued>
    <us-gaap:IncomeTaxExaminationPenaltiesAndInterestAccrued
      contextRef="ie6b462932c454ef1af9e87a9f2fb7348_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTEvZnJhZzozZTU1OTgwNGRlNTc0ODRjYTM4YWI4MjRhZjE1ZTUwOS90ZXh0cmVnaW9uOjNlNTU5ODA0ZGU1NzQ4NGNhMzhhYjgyNGFmMTVlNTA5XzI5MTA_bfa6723c-7818-4c98-a108-dadeda554c78"
      unitRef="usd">0</us-gaap:IncomeTaxExaminationPenaltiesAndInterestAccrued>
    <us-gaap:SegmentReportingDisclosureTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTcvZnJhZzo0MDgzYWI4MThlZDY0Y2RkODdkMDk3MWY3MThlODFhOS90ZXh0cmVnaW9uOjQwODNhYjgxOGVkNjRjZGQ4N2QwOTcxZjcxOGU4MWE5XzI3Nw_4817b631-c5c1-4785-a06f-f59b31a85e12">Revenue and Other Information&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&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 presents our revenue categories for the years ended December&#160;31, 2020, 2019 and 2018 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:12pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:63.269%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.043%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.043%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.046%"/&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:10pt;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;Year 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:10pt;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="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;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;2019&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;2018&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Core solutions&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;100,938&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;88,581&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;70,549&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Value+ services&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:10pt;font-weight:400;line-height:100%"&gt;195,146&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;153,994&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;113,072&#160;&lt;/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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other&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:10pt;font-weight:400;line-height:100%"&gt;13,972&#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:10pt;font-weight:400;line-height:100%"&gt;13,437&#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:10pt;font-weight:400;line-height:100%"&gt;6,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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total revenue&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 #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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;310,056&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;256,012&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;190,071&#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-bottom:6pt;margin-top:12pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Our revenue is generated primarily from United States customers. All of our property and equipment is located in the United States.&lt;/span&gt;&lt;/div&gt;</us-gaap:SegmentReportingDisclosureTextBlock>
    <us-gaap:ScheduleOfProductInformationTableTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTcvZnJhZzo0MDgzYWI4MThlZDY0Y2RkODdkMDk3MWY3MThlODFhOS90ZXh0cmVnaW9uOjQwODNhYjgxOGVkNjRjZGQ4N2QwOTcxZjcxOGU4MWE5XzI3NQ_10e876c0-2d36-4650-9426-e3223ee20caa">&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&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 presents our revenue categories for the years ended December&#160;31, 2020, 2019 and 2018 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:12pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:63.269%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.043%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.043%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.046%"/&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:10pt;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;Year 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:10pt;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="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;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;2019&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;2018&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Core solutions&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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;100,938&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;88,581&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;70,549&#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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Value+ services&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:10pt;font-weight:400;line-height:100%"&gt;195,146&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;153,994&#160;&lt;/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:10pt;font-weight:400;line-height:100%"&gt;113,072&#160;&lt;/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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other&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:10pt;font-weight:400;line-height:100%"&gt;13,972&#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:10pt;font-weight:400;line-height:100%"&gt;13,437&#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:10pt;font-weight:400;line-height:100%"&gt;6,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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total revenue&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 #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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;310,056&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;256,012&#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:10pt;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:10pt;font-weight:400;line-height:100%"&gt;190,071&#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:ScheduleOfProductInformationTableTextBlock>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i49f21b866a974cb5af0d88082667c437_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTcvZnJhZzo0MDgzYWI4MThlZDY0Y2RkODdkMDk3MWY3MThlODFhOS90YWJsZTo0NzM4NmQ1Y2UzODM0YzQwOTcwYmVhMzQ2ZjgyZTE3ZS90YWJsZXJhbmdlOjQ3Mzg2ZDVjZTM4MzRjNDA5NzBiZWEzNDZmODJlMTdlXzItMi0xLTEtMA_e10d6762-99db-48ca-9c6e-9c3ac923d294"
      unitRef="usd">100938000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i155f8f7267774e7b8044097d9d108b30_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTcvZnJhZzo0MDgzYWI4MThlZDY0Y2RkODdkMDk3MWY3MThlODFhOS90YWJsZTo0NzM4NmQ1Y2UzODM0YzQwOTcwYmVhMzQ2ZjgyZTE3ZS90YWJsZXJhbmdlOjQ3Mzg2ZDVjZTM4MzRjNDA5NzBiZWEzNDZmODJlMTdlXzItNC0xLTEtMA_8081a24d-8a79-402f-b1fe-dd9fc68e2353"
      unitRef="usd">88581000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="id161bac78060432b9f1bbad8354f0fb4_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTcvZnJhZzo0MDgzYWI4MThlZDY0Y2RkODdkMDk3MWY3MThlODFhOS90YWJsZTo0NzM4NmQ1Y2UzODM0YzQwOTcwYmVhMzQ2ZjgyZTE3ZS90YWJsZXJhbmdlOjQ3Mzg2ZDVjZTM4MzRjNDA5NzBiZWEzNDZmODJlMTdlXzItNi0xLTEtMA_fd3fc6ca-b213-476f-9e04-27582da6b1ad"
      unitRef="usd">70549000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i3f25746ecdf4470094faade647b145f8_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTcvZnJhZzo0MDgzYWI4MThlZDY0Y2RkODdkMDk3MWY3MThlODFhOS90YWJsZTo0NzM4NmQ1Y2UzODM0YzQwOTcwYmVhMzQ2ZjgyZTE3ZS90YWJsZXJhbmdlOjQ3Mzg2ZDVjZTM4MzRjNDA5NzBiZWEzNDZmODJlMTdlXzMtMi0xLTEtMA_fea8e9b7-75f4-4a64-8190-c8ef4c3a2adc"
      unitRef="usd">195146000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ia3851c5bdd1e4f21ac815c345ef884a4_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTcvZnJhZzo0MDgzYWI4MThlZDY0Y2RkODdkMDk3MWY3MThlODFhOS90YWJsZTo0NzM4NmQ1Y2UzODM0YzQwOTcwYmVhMzQ2ZjgyZTE3ZS90YWJsZXJhbmdlOjQ3Mzg2ZDVjZTM4MzRjNDA5NzBiZWEzNDZmODJlMTdlXzMtNC0xLTEtMA_578fe5be-5611-4cc6-992c-6f023df43239"
      unitRef="usd">153994000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i6ab43607928b4eb6bcf22addd709f5ed_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTcvZnJhZzo0MDgzYWI4MThlZDY0Y2RkODdkMDk3MWY3MThlODFhOS90YWJsZTo0NzM4NmQ1Y2UzODM0YzQwOTcwYmVhMzQ2ZjgyZTE3ZS90YWJsZXJhbmdlOjQ3Mzg2ZDVjZTM4MzRjNDA5NzBiZWEzNDZmODJlMTdlXzMtNi0xLTEtMA_141b5725-fe09-4b76-a592-e3d6cf62d907"
      unitRef="usd">113072000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i7f3b18600ba9494fa92c6810bc520195_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTcvZnJhZzo0MDgzYWI4MThlZDY0Y2RkODdkMDk3MWY3MThlODFhOS90YWJsZTo0NzM4NmQ1Y2UzODM0YzQwOTcwYmVhMzQ2ZjgyZTE3ZS90YWJsZXJhbmdlOjQ3Mzg2ZDVjZTM4MzRjNDA5NzBiZWEzNDZmODJlMTdlXzQtMi0xLTEtMA_3e31eccf-0f14-4b3c-9287-47c47228280c"
      unitRef="usd">13972000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i85640fb3a94a495c8f1c47eee8c9965e_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTcvZnJhZzo0MDgzYWI4MThlZDY0Y2RkODdkMDk3MWY3MThlODFhOS90YWJsZTo0NzM4NmQ1Y2UzODM0YzQwOTcwYmVhMzQ2ZjgyZTE3ZS90YWJsZXJhbmdlOjQ3Mzg2ZDVjZTM4MzRjNDA5NzBiZWEzNDZmODJlMTdlXzQtNC0xLTEtMA_0b7d558f-dda3-41ee-9efc-32d10da5b638"
      unitRef="usd">13437000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i8254a32400ed4a55a4959493198ce754_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTcvZnJhZzo0MDgzYWI4MThlZDY0Y2RkODdkMDk3MWY3MThlODFhOS90YWJsZTo0NzM4NmQ1Y2UzODM0YzQwOTcwYmVhMzQ2ZjgyZTE3ZS90YWJsZXJhbmdlOjQ3Mzg2ZDVjZTM4MzRjNDA5NzBiZWEzNDZmODJlMTdlXzQtNi0xLTEtMA_939067b8-fe23-43c1-997d-54b8265543f5"
      unitRef="usd">6450000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTcvZnJhZzo0MDgzYWI4MThlZDY0Y2RkODdkMDk3MWY3MThlODFhOS90YWJsZTo0NzM4NmQ1Y2UzODM0YzQwOTcwYmVhMzQ2ZjgyZTE3ZS90YWJsZXJhbmdlOjQ3Mzg2ZDVjZTM4MzRjNDA5NzBiZWEzNDZmODJlMTdlXzUtMi0xLTEtMA_321f5d30-8579-4f78-b0dc-4b77d023df57"
      unitRef="usd">310056000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTcvZnJhZzo0MDgzYWI4MThlZDY0Y2RkODdkMDk3MWY3MThlODFhOS90YWJsZTo0NzM4NmQ1Y2UzODM0YzQwOTcwYmVhMzQ2ZjgyZTE3ZS90YWJsZXJhbmdlOjQ3Mzg2ZDVjZTM4MzRjNDA5NzBiZWEzNDZmODJlMTdlXzUtNC0xLTEtMA_d7cf15ae-7521-482b-8d54-ac1891ca1416"
      unitRef="usd">256012000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNTcvZnJhZzo0MDgzYWI4MThlZDY0Y2RkODdkMDk3MWY3MThlODFhOS90YWJsZTo0NzM4NmQ1Y2UzODM0YzQwOTcwYmVhMzQ2ZjgyZTE3ZS90YWJsZXJhbmdlOjQ3Mzg2ZDVjZTM4MzRjNDA5NzBiZWEzNDZmODJlMTdlXzUtNi0xLTEtMA_ac0e5b1a-3885-47c6-a1dd-1ea7a9a74382"
      unitRef="usd">190071000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNjAvZnJhZzphY2M2MzNjOWQ1MDY0YWI4OWExY2FkMTljYTQ2YmNhZi90ZXh0cmVnaW9uOmFjYzYzM2M5ZDUwNjRhYjg5YTFjYWQxOWNhNDZiY2FmXzM5NA_019e5981-05e5-485b-84ac-a984710e67ba">Retirement Plans We have a 401(k) retirement and savings plan made available to all employees. The 401(k) plan allows each participant to contribute up to an amount not to exceed an annual statutory maximum. We may, at our discretion, make matching contributions to the 401(k) plan. Cash contributions to the plan were $3.2&#160;million, $2.5 million, and $1.6 million for the years ended December&#160;31, 2020, 2019 and 2018, respectively.</us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock>
    <us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount
      contextRef="iccde34631c1a4a6f8f15e4488c1590ee_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNjAvZnJhZzphY2M2MzNjOWQ1MDY0YWI4OWExY2FkMTljYTQ2YmNhZi90ZXh0cmVnaW9uOmFjYzYzM2M5ZDUwNjRhYjg5YTFjYWQxOWNhNDZiY2FmXzI3NDg3NzkwNjk4NzA_d72b5ead-ed92-401f-ba29-cad0f51ac0c1"
      unitRef="usd">3200000</us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount>
    <us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount
      contextRef="icc88a464dfbb4303b4e1367f77fe6e65_D20190101-20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNjAvZnJhZzphY2M2MzNjOWQ1MDY0YWI4OWExY2FkMTljYTQ2YmNhZi90ZXh0cmVnaW9uOmFjYzYzM2M5ZDUwNjRhYjg5YTFjYWQxOWNhNDZiY2FmXzMzMA_486e33a7-de03-4136-9187-960754f9982f"
      unitRef="usd">2500000</us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount>
    <us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount
      contextRef="i849de4110fc04e2c97f7aa6d77980eeb_D20180101-20181231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjVkMDA2ZTNhZTQ2NTQ2MjZiNzFiNGRmNGE3YjcwNjJhL3NlYzo1ZDAwNmUzYWU0NjU0NjI2YjcxYjRkZjRhN2I3MDYyYV8xNjAvZnJhZzphY2M2MzNjOWQ1MDY0YWI4OWExY2FkMTljYTQ2YmNhZi90ZXh0cmVnaW9uOmFjYzYzM2M5ZDUwNjRhYjg5YTFjYWQxOWNhNDZiY2FmXzMzNA_78765e1b-3bb0-4179-899a-fcab9498aeb9"
      unitRef="usd">1600000</us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount>
</xbrl>
