 | us-gaap:ServicingLiabilityAtAmortizedValueBalance | parent-child | http://fasb.org/us-gaap/role/disclosure/TransfersAndServicing |
 | us-gaap:ServicingLiabilityAtAmortizedValueAdditions | parent-child | http://fasb.org/us-gaap/role/disclosure/TransfersAndServicing |
 | us-gaap:ServicingLiabilityAtAmortizedValueDisposals | parent-child | http://fasb.org/us-gaap/role/disclosure/TransfersAndServicing |
 | us-gaap:ServicingLiabilityAtAmortizedCostAmortization | parent-child | http://fasb.org/us-gaap/role/disclosure/TransfersAndServicing |
 | us-gaap:ServicingLiabilityAtAmortizedCostOtherIncreaseDecreaseInObligation | parent-child | http://fasb.org/us-gaap/role/disclosure/TransfersAndServicing |
 | us-gaap:ServicingLiabilityAtAmortizedValuePeriodIncreaseDecrease | parent-child | http://fasb.org/us-gaap/role/disclosure/TransfersAndServicing |
 | us-gaap:ServicingLiabilityAtAmortizedValueBalance | parent-child | http://fasb.org/us-gaap/role/disclosure/TransfersAndServicing |
 | us-gaap:ServicingLiabilityAtAmortizedValueBalance | domain-member | http://fasb.org/us-gaap/role/disclosure/TransfersAndServicingServicingLiabilityAtAmortizedValueTable |
 | us-gaap:ServicingLiabilityAtAmortizedValueAdditions | domain-member | http://fasb.org/us-gaap/role/disclosure/TransfersAndServicingServicingLiabilityAtAmortizedValueTable |
 | us-gaap:ServicingLiabilityAtAmortizedValueDisposals | domain-member | http://fasb.org/us-gaap/role/disclosure/TransfersAndServicingServicingLiabilityAtAmortizedValueTable |
 | us-gaap:ServicingLiabilityAtAmortizedCostAmortization | domain-member | http://fasb.org/us-gaap/role/disclosure/TransfersAndServicingServicingLiabilityAtAmortizedValueTable |
 | us-gaap:ServicingLiabilityAtAmortizedCostOtherIncreaseDecreaseInObligation | domain-member | http://fasb.org/us-gaap/role/disclosure/TransfersAndServicingServicingLiabilityAtAmortizedValueTable |
 | us-gaap:ServicingLiabilityAtAmortizedValuePeriodIncreaseDecrease | domain-member | http://fasb.org/us-gaap/role/disclosure/TransfersAndServicingServicingLiabilityAtAmortizedValueTable |