docs: def _finalize_block_blob(self, ud, metadata):
          # type: (Uploader, blobxfer.models.upload.Descriptor, dict) -> None
          """Finalize Block blob
          :param Uploader self: this
          :param blobxfer.models.upload.Descriptor ud: upload descriptor
          :param dict metadata: metadata dict
          """
          if not ud.entity.is_encrypted and ud.must_compute_md5:
              digest = blobxfer.util.base64_encode_as_string(ud.md5.digest())
          else:
              digest = None
          blobxfer.operations.azure.blob.block.put_block_list(
              ud.entity, ud.last_block_num, digest, metadata)
          if blobxfer.util.is_not_empty(ud.entity.replica_targets):
              for ase in ud.entity.replica_targets:
                  blobxfer.operations.azure.blob.block.put_block_list(
                      ase, ud.last_block_num, digest, metadata)