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